java中的问号是什么意思?

时间:2014-05-26 06:35:36

标签: java

我遇到了代码snippt

putAll(Map<? extends K, ? extends V> map)
Android developer网站上

,我知道 K V 是占位符,但问号是什么?意思?这是否意味着参数必须是引用类型或其他内容?

2 个答案:

答案 0 :(得分:5)

它是类型的外卡,在你的情况下

putAll(Map<? extends K, ? extends V> map)

第一个问号表示任何延伸K的类型都适用,等等。

您可以阅读更多here

答案 1 :(得分:5)

在Java ? 中称为通配符,您可以使用它来重新呈现unknown type

  

上边界通配符,Foo是任何类型,匹配Foo和Foo的任何子类型。 process方法可以按类型Foo:

访问列表元素
public static void process(Map<? extends A> list) {
  /* code */
}

在您的情况下,它被称为上限有界通配符。

http://docs.oracle.com/javase/tutorial/java/generics/upperBounded.html

putAll(Map<? extends K, ? extends V> map)

这意味着,任何可以扩展A类的对象都适用于此条件。