泛型<?>实际上意味着什么?

mez*_*hic 42 java generics

可能重复:
List <?>在java泛型中的含义是什么?
Java泛型的类型参数中的问号是什么意思?

道歉,但很难尝试搜索<?>.

Java泛型有什么意义?我的理解<A extends B><A super B>,但在此之前我从来没有见过自己的这个问号.

Col*_*ert 52

<?>是一种简写<? extends Object>,它也被称为无界通配符.因此,您可以在泛型中指定任何类型的对象.

例如,List该类被声明为List<?>,因为它可以是您想要的任何列表.


资源:

  • 如果有什么?那你为什么要使用通用呢?我不认为这是一个能带来改变的好答案。因为 `&lt;E extends Object&gt;` 还允许您指定任何类型的对象。 (2认同)

Pet*_*rey 12

它是一种wildcard类型.这是短暂的? extends Object

如果你得到它,你所知道的就是它Object.如果您尝试设置,则不能,因为它可能是Object的任何子类.

  • `Class <?>`和'Class'之间有什么区别?为什么我需要使用`Class <?>`而不是`Class`? (5认同)
  • @ycomp 原始类型已关闭泛型。例如。地图地图;map.entrySet() 是一个普通的集合,而不是 `Set&lt;Entry&gt;`,而使用 `Map&lt;?, ?&gt;` 时,entrySet 是一个 `Set&lt;Entry&lt;?, ?&gt;&gt;` (2认同)
  • @hackjutsu 不,一个“?”永远不会被假定与另一个“?”相同 (2认同)

Fra*_*eth 5

通配符Generic是“某物”。它将作为对象的扩展来处理。

从Java 文档

在通用代码中,称为通配符的问号(?)表示未知类型。通配符可以在多种情况下使用:作为参数,字段或局部变量的类型;有时作为返回类型(尽管更具体的做法是更好的编程习惯)。通配符从不用作泛型方法调用,泛型类实例创建或超类型的类型参数。

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