我不知道我是否在问愚蠢的问题。但是我不了解这个东西,因为我是Java新手。Java中此语法形式<?>的含义是什么?
我碰到一个语法来了,如同:
Form<?> form = new Form<Void>("userForm") {
@Override
protected void onSubmit() {
/*some code here*/
}
};
是否有人可以解释我使用这个语法?如果不理解这个概念,我不能前进?
我不知道我是否在问愚蠢的问题。但是我不了解这个东西,因为我是Java新手。Java中此语法形式<?>的含义是什么?
我碰到一个语法来了,如同:
Form<?> form = new Form<Void>("userForm") {
@Override
protected void onSubmit() {
/*some code here*/
}
};
是否有人可以解释我使用这个语法?如果不理解这个概念,我不能前进?
如果你创建一个表单变种应指定此形式的类型,但是你可以使用通配符来加载任何“类型”
但要做到这一点,你需要添加一个@overryde注释因为这种的通配符是不安全的,应该避免,所以如果你真的想使用它,你需要添加@overryde来确保你知道你在做什么。
干杯!
此语法用于创建通用对象。所以你可以为任何类型的对象使用泛型类。例如, ;
Form<String> form = new Form<String>("userForm")`
和
Form<Double> form = new Form<Double>("userForm")
不是同一类的对象。第一种是作为字符串,第二个是作为双(类型仅为示例)
Form<?> form = new Form<Void>("userForm")
的使用表明,它是通配符,它意味着你可以使用任何类型的,但有可能是ambigious情况。为了避免出现不明情况,您可以声明表单类型或其他类型。
要查看Java中泛型类和集合的详细信息,这里有一些教程。
https://docs.oracle.com/javase/tutorial/java/generics/,更特别https://docs.oracle.com/javase/tutorial/java/泛型/ wildcards.html – ortis
它指定一个未绑定的通配符(https://docs.oracle.com/javase/tutorial/java/generics/unboundedWildcards.html) – ceekay