在Java泛型教程中,它说泛型方法中的<?>
意味着“未知”。
但我不明白<?>
与<T>
的区别。两者都意味着您可以传入任何您想要的类型参数。请解释一下这个算子。
答案 0 :(得分:0)
以下摘录来自http://docs.oracle.com/javase/tutorial/java/generics/wildcards.html
在通用代码中,问号(?),称为通配符, 代表一种未知类型。通配符可以用于各种 情境:作为参数,字段或局部变量的类型; 有时作为返回类型(虽然它是更好的编程实践 更具体)。通配符永远不会用作类型参数 用于泛型方法调用,泛型类实例创建或 超类型。
另一个:
使用通配符指定无界通配符类型 (?),例如,List。这称为未知类型的列表。 有两种情况,无界通配符很有用 的方法:
- 如果您正在编写可以使用Object类中提供的功能实现的方法。
- 当代码使用泛型类中不依赖于类型参数的方法时。例如,List.size或List.clear。在 事实上,Class经常被使用,因为大部分方法都在 上课不依赖于T。
第二个子弹是最大的区别。使用&#39;?&#39;当您不需要在实际类型上调用操作时。如果您需要更多详细信息,请参阅提供的链接此通配符部分下有几个子部分,涵盖不同的点,因此不会只停留在您指向的页面。