我遇到了代码snippt
putAll(Map<? extends K, ? extends V> map)
在Android developer网站上,我知道 K 和 V 是占位符,但问号是什么?意思?这是否意味着参数必须是引用类型或其他内容?
答案 0 :(得分:5)
答案 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
类的对象都适用于此条件。