2013-12-05 15 views
0

Если есть, в чем разница, если я использую Class или Class<?> в качестве типа возврата, например? Есть ли случаи, когда я должен обратить внимание на использование того или другого?В чем разница между классом и классом <?>?

+0

использование 'Класс ,' Class' является [rawtype] (http://stackoverflow.com/questions/ 2770321/what-is-a-raw-type-and-why-shouldnt-we-use-it) – zapl

ответ

2
  1. Class является rawtype и следует избегать использования таких.
  2. Class<?> представляет собой параметризованный неизвестный тип Class.

Во время выполнения нет никакой разницы между Class и Class<?>, вообще. Во-первых, они оба преобразуются в общий Class<Object> и, наконец, тип стирается (из-за type erasure).

+0

Почему я должен избегать rawtypes, если эти два конвертируются в одно и то же во время выполнения? –

+1

Поскольку типы raw являются склонными к компиляции-ошибкам. Если вы используете Generics, компилятор проверяет правильность операций, которые вы делаете с типами, и отклоняет компиляцию, если возможно появление «ClassCastException» в Runtime. Используя только сырые типы, компилятор показывает только предупреждение, говоря: «Надеюсь, вы знаете, что вы делаете». –

Смежные вопросы