2015-05-11 33 views
-3

我不知道我是否在问愚蠢的问题。但是我不了解这个东西,因为我是Java新手。Java中此语法形式<?>的含义是什么?

我碰到一个语法来了,如同:

Form<?> form = new Form<Void>("userForm") { 
     @Override 
     protected void onSubmit() { 

      /*some code here*/ 
     } 
    }; 

是否有人可以解释我使用这个语法?如果不理解这个概念,我不能前进?

+3

https://docs.oracle.com/javase/tutorial/java/generics/,更特别https://docs.oracle.com/javase/tutorial/java/泛型/ wildcards.html – ortis

+3

它指定一个未绑定的通配符(https://docs.oracle.com/javase/tutorial/java/generics/unboundedWildcards.html) – ceekay

回答

0

如果你创建一个表单变种应指定此形式的类型,但是你可以使用通配符来加载任何“类型”

但要做到这一点,你需要添加一个@overryde注释因为这种的通配符是不安全的,应该避免,所以如果你真的想使用它,你需要添加@overryde来确保你知道你在做什么。

干杯!

2

此语法用于创建通用对象。所以你可以为任何类型的对象使用泛型类。例如, ;

Form<String> form = new Form<String>("userForm")` 

Form<Double> form = new Form<Double>("userForm") 

不是同一类的对象。第一种是作为字符串,第二个是作为双(类型仅为示例)

Form<?> form = new Form<Void>("userForm") 

的使用表明,它是通配符,它​​意味着你可以使用任何类型的,但有可能是ambigious情况。为了避免出现不明情况,您可以声明表单类型或其他类型。

要查看Java中泛型类和集合的详细信息,这里有一些教程。

generics

collections

相关问题