Если есть, в чем разница, если я использую Class
или Class<?>
в качестве типа возврата, например? Есть ли случаи, когда я должен обратить внимание на использование того или другого?В чем разница между классом и классом <?>?
ответ
Class
является rawtype и следует избегать использования таких.Class<?>
представляет собой параметризованный неизвестный типClass
.
Во время выполнения нет никакой разницы между Class
и Class<?>
, вообще. Во-первых, они оба преобразуются в общий Class<Object>
и, наконец, тип стирается (из-за type erasure).
Почему я должен избегать rawtypes, если эти два конвертируются в одно и то же во время выполнения? –
Поскольку типы raw являются склонными к компиляции-ошибкам. Если вы используете Generics, компилятор проверяет правильность операций, которые вы делаете с типами, и отклоняет компиляцию, если возможно появление «ClassCastException» в Runtime. Используя только сырые типы, компилятор показывает только предупреждение, говоря: «Надеюсь, вы знаете, что вы делаете». –
Это подмножество более общего генерического вопроса о различии между Anything и Anything <? >.
Существует довольно ясное описание его в основной яве учебники по дженерик: http://docs.oracle.com/javase/tutorial/extra/generics/wildcards.html
- 1. Разница между классом и классом <?>
- 2. Разница между классом <?> и классом <Object> в Java
- 3. В чем разница между классом clazz и классом <?> clazz в java?
- 4. В чем разница между классом и классом в рубине?
- 5. В чем разница между классом и классом класса Scala?
- 6. В чем разница между конкретным классом и абстрактным классом?
- 7. В чем разница между классом DES и классом DESCryptoServiceProvider?
- 8. В чем разница между статическим классом и нормальным классом?
- 9. В чем разница между раздутым классом и помеченным классом?
- 10. В чем разница между классом и классом? во флэш-as3
- 11. В чем разница между классом Debug и классом Trace?
- 12. В чем разница между обычным классом кэша и классом MemoryCache?
- 13. Разница между классом APIView и классом viewsets?
- 14. Разница между новым классом() {...} и новым классом {...}
- 15. В чем разница между классом и библиотекой?
- 16. В чем разница между интерфейсом и классом?
- 17. В чем разница между сущностью и классом?
- 18. Разница между окончательным классом и статическим классом
- 19. Разница между классом singleton и статическим классом?
- 20. Разница между «общественным» классом и немодифицированным классом?
- 21. Разница между классом A и классом Class1
- 22. Разница между основным классом и классом контроллера?
- 23. Разница между классом Pattern и классом Matcher
- 24. Разница между классом и пакетом
- 25. Разница между классом foo, классом foo() и классом foo (object)?
- 26. Разница между идентификатором и классом
- 27. разница между объектом и классом
- 28. Разница между этим и классом
- 29. Разница между классом и модулем
- 30. разница между интерфейсом и классом
использование 'Класс >,' Class' является [rawtype] (http://stackoverflow.com/questions/ 2770321/what-is-a-raw-type-and-why-shouldnt-we-use-it) – zapl