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