Почему не получается сделать downcast к пользовательскому классу?
Напишу причину данного и кода и мою проблему. В качестве обучения пытаюсь сам написать HashSet. Обычно реализуют данную коллекцию на основе массива, где каждый элемент - связный список (в моем случае класс Entry). Почему здесь невозможно преобразовать к массиву, содержащий тип Entry? Какой-то метод нужен что ли? Почему тогда компилятор java не ругается, когда мы приводим к T[]? В моем случае появляется такая ошибка -
java.lang.ClassCastException: class [Ljava.lang.Object; cannot be cast to class [Lorg.example.CarHashSet$Entry;
public class CarHashSet<T> implements CarSet<T> {
private static final int INITIAL_CAPACITY = 16;
private Entry[] array;
int size;
public CarHashSet() {
this.size = 0;
this.array = (Entry[]) new Object[INITIAL_CAPACITY];
}
private class Entry {
T value;
Entry next;
private Entry(T value, Entry next) {
this.value = value;
this.next = next;
}
}
}