У меня есть класс контейнера, который выглядит следующим образом. (Я удаляю все методы логики, чтобы не загромождать)Java generics, отличая T [] до исходного типа
public abstract class Container<T> {
protected T[] array;
public Container(int capacity) {
array = (T[]) new Object[capacity];
}
public T[] array() {
return array;
}
}
Этот класс используется, например, так:
public final class ItemContainer extends Container<Item> {
public ItemContainer(int capacity) {
super(capacity);
}
}
Этот контейнер теперь должен держать массив элементов. Однако при попытке передать его в Item[]
будет использоваться, представлена следующая ошибка:
Исключение в потоке «ForkJoinPool-2-рабоче-1» java.lang.ClassCastException: [Ljava.lang.Object ; не может быть добавлено к [Lcom.oblivion.entity.item.Item;
Как я могу обойти это?
Есть причина, почему вы используете массив вместо некоторой коллекции (Set, List, ...)? Те из вас могли бы сделать то, что вам нужно, чище. – LionC
@LionC. Задача для этого проекта заключалась в том, чтобы не использовать библиотеку Collections. Я мог бы легко выполнить эту функцию, используя «Список <>' Примечание: не школьный проект, а только личный. – Hobbyist
«Задача» в том смысле, что вы не можете использовать ее по техническим причинам или для вызова в том смысле, что хотите попробовать использовать Java без коллекций? – LionC