我参考了关于Java泛型的文档,并在一个简单的程序中尝试使用通配符“?”:
class Unknown <?> {
}
public class UnknownTypes {
public static void main(String s[] ) {
}
}
通配符"?"表示未知类型,在类Unknown中,我使用了泛型通配符本身;然而,当我进行编译时,会出现编译错误。如果我像这样使用它就可以工作了。
class Unknown <T> {
}
如果通配符“?”指代未知类型,为什么不能将“?”用作类型参数?
以下是我得到的编译错误。
UnknownTypes.java:1: error: <identifier> expected
class Unknown <?> {
^
UnknownTypes.java:1: error: '{' expected
class Unknown <?> {
^
UnknownTypes.java:10: error: reached end of file while parsing
}
通配符“?”需要与其他内容一起使用吗?
List<?> list = nonGenericGetList();
这样的事情更有用(在使用旧库时经常这样做)。 - David Ehrmannprivate ? a
是合法的,但这既不被允许也没有意义。 - Evan Sebastian