2015-05-11 59 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

相關問題