在泛型方法中使用<! - ? - >或<t> </t>

时间:2014-09-14 12:24:04

标签: java generics wildcard

在Java泛型教程中,它说泛型方法中的<?>意味着“未知”。

但我不明白<?><T>的区别。两者都意味着您可以传入任何您想要的类型参数。请解释一下这个算子。

1 个答案:

答案 0 :(得分:0)

以下摘录来自http://docs.oracle.com/javase/tutorial/java/generics/wildcards.html

  

在通用代码中,问号(?),称为通配符,   代表一种未知类型。通配符可以用于各种   情境:作为参数,字段或局部变量的类型;   有时作为返回类型(虽然它是更好的编程实践   更具体)。通配符永远不会用作类型参数   用于泛型方法调用,泛型类实例创建或   超类型。

另一个:

  

使用通配符指定无界通配符类型   (?),例如,List。这称为未知类型的列表。   有两种情况,无界通配符很有用   的方法:

     
      
  • 如果您正在编写可以使用Object类中提供的功能实现的方法。
  •   
  • 当代码使用泛型类中不依赖于类型参数的方法时。例如,List.size或List.clear。在   事实上,Class经常被使用,因为大部分方法都在   上课不依赖于T。
  •   

第二个子弹是最大的区别。使用&#39;?&#39;当您不需要在实际类型上调用操作时。如果您需要更多详细信息,请参阅提供的链接此通配符部分下有几个子部分,涵盖不同的点,因此不会只停留在您指向的页面。