2012-07-09 77 views

回答

35

<?><? extends Object>的简写,它也被称为无界通配符。所以你可以在你的泛型中指定任何类型的对象。

例如List类声明为List<?>,因为它可以是任何你想要的列表。


资源:

+0

如果有什么?那你为什么使用通用?我不这么认为这是很好的解决方案。因为''也允许你指定任何类型的对象。 – UnKnown 2016-04-07 09:34:45

8

它是一种wildcard类型。这是短期的? extends Object

如果你得到它,你知道它是一个Object。如果尝试设置,则不能,因为它可能是Object的任何子类。

+5

'Class '和'Class'有什么区别?为什么我需要使用'Class '而不是'Class'? – ycomp 2015-10-22 18:37:09

+1

@ycomp原始类型已关闭。例如。地图; map.entrySet()是一个普通的集合,而不是'Set ',而使用'Map '而你的entrySet是'Set >' – 2015-10-23 12:48:15

+0

为什么不直接在这种情况下使用Object?使用泛型的优点是什么? – Davor 2016-03-23 12:07:49

3

它是一个通配符。假设你有一个集合,但这个集合的类型是未知的,所以你用“?”来表示它。它只是指定类型未知。 欲了解更多详情,请参阅http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf 我相信这会有所帮助。

3

通配符通用是“某事”。它将作为Object的扩展来处理。

从Java documentation:(?)

在通用代码,问号,称为通配符, 代表未知类型。通配符可用于各种各样的情况:作为参数,字段或局部变量的类型; 有时作为返回类型(尽管更好的编程练习 更具体)。对于泛型方法调用,泛型类实例创建或 超类型,通配符永远不会用作类型参数 。

因此,例如,List<?>是包含来自未知类型的对象的列表。

相关问题