Это имеет смысл, потому что у вас есть два разных параметра типа, называемых T. Однако исправить это довольно сложно, так как я не могу понять, как вы вообще ожидаете, что ваш код скомпилируется.Рассмотрим этот бит:
Array.newInstance(T, size);
T - это имя параметра типа ... его нельзя использовать в качестве аргумента метода.
Обратите внимание, что из-за стирания типаесли вы хотите иметь возможность создавать массив правильного типа, вам нужно указать соответствующий экземпляр Class
.Например:
public class RegisterSet<T> {
private T[] register;
public RegisterSet(Class<T> clazz, int size) {
register = (T[])Array.newInstance(clazz, size);
}
}
... но я не уверен, какой класс Array
вы пытаетесь использовать здесь.