[英]Java use of ? in generic programming
考慮以下兩個實例函數:
public <T> void f1 (List<? extends Object> a) {
System.out.println(a);
}
public void f2 (<? extends Object> a) {
System.out.println(a);
}
接受第一個函數,而第二個函數獲得錯誤標記Syntax error on token "(", Type expected after this token
我不明白原因。 有人能幫我嗎?
編輯:讓我改一下。 我有一堂課
package pk1;
public class Gencla<T> {
public T alfa;
}
和測試班
package pk1;
public class Test {
public void f1 ( Gencla<? extends Object> a ) {
System.out.println(a.alfa);
}
public void f2 ( <? extends Object> a ) {
System.out.println(a);
}
public static void main(String[] args) {
}
}
在函數f1和f2中,要打印的是Type為“?extended Object”的東西。 為什么編譯器在f2上加一個標記?
您的f2函數:
public <T> void f2 ( <? extends Object> a ) {
System.out.println(a);
}
失敗,請定義類型參數。 通配符從不用作泛型方法調用,泛型類實例創建或超類型的類型參數。 相反,它用於限制或擴展現有的集合或泛型類型,因此可以使用更少或更多的類型。
public <T extends Object> void f2 ( T a ) {
//do stuff
}
這是您要做什么?
public <T extends Object> f2 (T a) {
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.