回答
这是相同的所有通用的和原始类型:
Class // An unknown class (raw type)
Class<?> // An unknown class (generic version)
Class<String> // The String class
在这种特殊情况下有Class
和Class<?>
之间没有太大的实际差异,因为它们都代表一个未知的类。根据现有的声明,编译器可以要求泛型类型而不是原始类型。
但:自Java 1.5以来,您应该尽可能使用通用表单。 Class<?>
明确指出你的意思是“未知类”,Class<String>
cleary指出你的意思是String
类。原料Class
可能意味着均为。
最后它对编译器没有什么区别,但它使代码的意图更易于理解和维护。
类javadoc:
类型参数:
T
- 通过此Class
对象建模的类的类型。例如,String.class
的类型是Class<String>
。如果正在建模的类未知,则使用Class<?>
。
不带类型参数使用Class
类似于使用任何通用类(Map
,List
等),而不类型参数 - 无论它是一个预1.5遗留使用或它只是一个的代码,不会段不关心未经检查的类型转换。
类<?>
表明您有意编写不了解或关心您正在处理的类的Java 5级代码。离开它使得它看起来像旧的代码或由尚未学习泛型的人编写的代码。
“它看起来像旧的代码或由尚未学习泛型的人编写的代码。”这是一个正确的说法。类(发音为“未知类”),即类型匹配任何内容的类。由于显而易见的原因,它被称为通配符类型。
例如:
public void drawAll(List<Shape> shapes) {
for (Shape s: shapes) {
s.draw(this);
}
}
类型的规则说,drawAll()只能呼吁的正是Shape
列表:它不能,例如,被称为上,也就是说,一个List<Circle>
。这是不幸的,因为所有的方法都是从列表中读取形状,所以它可以在List<Circle>
上调用。
我们真正想要的是该方法接受任何形状的列表。
public void drawAll (List <? extends Shape> shapes) {
}
阅读更多:http://docs.oracle.com/javase/tutorial/extra/generics/wildcards.html
- 1. Java中的类<?>和类<Object>之间的区别
- 2. <%! %>与<% %>之间的区别
- 3. <s:Line>和graphics.lineTo()之间的区别
- 4. APIView类和viewsets类之间的区别?
- 5. Pattern类和Matcher类之间的区别
- 6. <tiles:add>和<tiles:put> struts之间的区别是什么?
- 7. <input type ='button'/>和<input type ='submit'/>之间的区别
- 8. ArrayList <String>和ArrayList <>之间的区别?
- 9. 懒惰<T>和LazyInit之间的区别<T>
- 10. <objectAnimator>和ValueAnimator又名<animator>之间的区别?
- 11. Apache OFBiz:<entity-condition>和<entity-and>之间的区别?
- 12. 列表<Integer>和List <?之间的区别super Integer>
- 13. Symfony在<ModelName> .class.php和<ModelName>之间的区别Table.class.php
- 14. React-Router V4 - <Match>和<Route>之间的区别
- 15. “Convert.ToString(Nullable <int>)”和“Nullable <int> .ToString()”之间的区别?
- 16. 列表<T>和列表<object>之间的区别?
- 17. SPFile和PublishingPage类别之间的区别
- 18. <input type =“button”/>和<button>之间有什么区别?
- 19. 如何<expr>和非<expr>映射之间区别?
- 20. <class name>之间的区别。 <var name>和自我。 <var name>在python类
- 21. 超类和超类型之间的区别以及子类和子类型之间的区别
- 22. xhtml在<img .... />和<img ...>之间的区别</img>?
- 23. <extends Comparable>和<extends Comparable < T >>之间的区别?
- 24. Ruby中+和<<之间的区别
- 25. java类和jar之间的区别
- 26. Smarty和SmartyBC类之间的区别
- 27. MustInherit和抽象类之间的区别
- 28. 结构和类之间的区别?
- 29. BrowseFragment和BrowseSupportFragment类之间的区别?
- 30. SoundEffect和SoundEffectInstance类之间的区别
应该避免Class类尽可能... – 2009-06-17 13:53:41