我不知道我是否在問愚蠢的問題。但是我不瞭解這個東西,因爲我是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