Хорошо, я прочитал много ответов на этот вопрос, но у меня более конкретный. В качестве примера возьмем следующий фрагмент кода.
public class GenericArray<E>{
E[] s= new E[5];
}
После стирания стилей он становится
public class GenericArray{
Object[] s= new Object[5];
}
Этот фрагмент кода, похоже, работает хорошо. Почему это вызывает ошибку времени компиляции?
Кроме того, я знаю из других ответов, что следующие коды хорошо работают с той же целью.
public class GenericArray<E>{
E[] s= (E[])new Object[5];
}
Я прочитал несколько комментариев, говоря, что часть кода выше небезопасна, но почему она небезопасна? Может ли кто-нибудь предоставить мне конкретный пример, где приведенная выше часть кода вызывает ошибку?
Кроме того, следующий код также неверен. Но почему? Кажется, что он хорошо работает и после стирания.
public class GenericArray<E>{
E s= new E();
}