В 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

Ответы на вопрос(2)

Ваш ответ на вопрос