Может anybode exlain почему родовое <Object[]>
вызывает ClassCastException
(RuntimeException!)Дженерики как результат java.lang.Object не может быть приведен в [Ljava.lang.Object
Я знаю, что все дженерики удаление то время как фаза компиляции и сделать не влияют на байт-код. Но, похоже, у него есть какой-то нюанс.
Вот мой пример (упрощенный для этой должности):
public class CastTest {
public static void main(String[] args) {
List a = new ArrayList();
a.add(new Object());
List<Object[]> b = a;
b.get(0).toString();
}
}
этот код возвращает:
Exception in thread "main" java.lang.ClassCastException: java.lang.Object cannot be cast to [Ljava.lang.Object;
at CastTest.main(CastTest.java:9)
Я не понимаю, что не так с этим кодом. Может ли кто-нибудь объяснить это поведение?
Потому что 'a' содержит' Object', а не 'Object []'. – Maroun
Это не матер, я не использовал какие-либо приведения в этом примере – Akvel
Это неявно сделано. – Maroun