В Java, как я могу избежать необработанных типов при вызове getClass для экземпляра универсального типа?
Предположим, у меня есть это на Java:
List<String> list = new ArrayList<String>();
list.getClass();
Тип последнего выраженияClass<? extends List>
, Я понимаю, почему из-за стирания не может бытьClass<? extends List<String>>
, Но почему это не может бытьClass<? extends List<?>>
?
Разве я не могу избежать обоих?снятые предупреждения а такженеобработанные предупреждения типа если я хочу присвоить результат этого выражения переменной, которая каким-то образом хранит информацию о том, что этот класс на самом деле является своего родаList
?
Class<? extends List> listClass = list.getClass(); // raw type warning
Class<? extends List<?>> listClass = (Class<? extends List<?>>) list.getClass(); // unchecked cast warning