исправленный. Но некоторая информация о параметризации сохраняется во время выполнения, не все стирается;)
я объявлю Класс как поле:
Class fooClass;
Затмение дает мне предупреждение:
Класс является необработанным типом. Ссылки на универсальный тип Class должны быть параметризованы
Что это значит на практике? и почему я должен это сделать? Если я спрашиваю Eclipse для «быстрого решения», это дает мне:
Class<?> fooClass;
который, кажется, не добавляет большую ценность, но больше не дает предупреждение.
РЕДАКТИРОВАТЬ: Почему класс является общим? Не могли бы вы привести пример параметризации, то есть может ли быть допустимое использование чего-то другого, кроме<?>
?
РЕДАКТИРОВАТЬ: ВАУ! Я не осознал всю глубину этого. Я также наблюдал за Java Puzzler, и он определенно напугал меня по поводу медвежьих ловушек. Поэтому я всегда буду использовать
Class<MyString> myStringClass = MyString.class;
скорее, чем
Class myStringClass = MyString.class;
(Но, использовав Java с первого дня, я не заметил, когда Class стал универсальным);
ПРИМЕЧАНИЕ: я принял @oxbow_lakes, поскольку это имеет для меня смысл, но это явно очень сложная область. Я призываю всех программистов использовать конкретныеClass<MyString>
скорее, чемClass
, А такжеClass<?>
гораздо безопаснее, чемClass
.