...通配符,表示未知类型。可以使用通配符...作为...局部变量的类型
从我的观点来看,这意味着我可以写出类似
的内容int a;
? b;
但我不能。
真的有可能吗?
答案 0 :(得分:4)
这是一个措辞令人震惊的声明,我很惊讶在文档中看到它。您不能使用通配符作为变量的类型,但您可以使用中的通配符变量的类型。
? a; // no
List<?> b; // yes
答案 1 :(得分:2)
这是泛型的文档。 Java是强类型的,不会接受wilcard作为变量类型。
威尔卡只接受通用类型,如:
List<?> x = new ArrayList<>()
或List<? extends String> x = new ArrayList<>()
答案 2 :(得分:2)
不,不可能。 Java是强类型的,?
用于各种情况(主要与泛型有关),但是如果你不能提前知道类型的话。
我建议您阅读您发布的其他文档,它有一些关于如何使用?
的优秀示例。
答案 3 :(得分:0)
你会混淆unbounded wildcard的目的。一般来说,这意味着在处理各种事物(例如集合)时,不知道或不关心类型。
例如,List<?> simpleList
是包含未知类型的列表。
一般情况下,? extends Object
,如果您确实认为自己需要?
,则需要使用Object
。
答案 4 :(得分:0)
不可能,Java Tutorial指出您可以使用这样的通配符定义局部变量:
List <?> localVariable;
但不是这样的:
? localVariable;
通配符仅在通用括号中用于Java中的排他性,替换类型参数。