Я на самом деле нашел довольно уникальное решение, чтобы обойти невозможность инициировать универсальный массив. То, что вам нужно сделать, это создать класс, который принимает переменную общего типа T следующим образом:
class GenericInvoker <T> {
T variable;
public GenericInvoker(T variable){
this.variable = variable;
}
}
и затем в вашем классе массива просто начните так:
GenericInvoker<T>[] array;
public MyArray(){
array = new GenericInvoker[];
}
запуск new Generic Invoker[]
вызовет проблему с непроверенным, но на самом деле не должно быть никаких проблем.
Чтобы получить из массива, вы должны вызвать массив [i] .variable следующим образом:
public T get(int index){
return array[index].variable;
}
Остальное, например, изменение размера массива, можно сделать с помощью Arrays.copyOf (), например, так:
public void resize(int newSize){
array = Arrays.copyOf(array, newSize);
}
И функцию добавления можно добавить так:
public boolean add(T element){
// the variable size below is equal to how many times the add function has been called
// and is used to keep track of where to put the next variable in the array
arrays[size] = new GenericInvoker(element);
size++;
}