考慮以下2實例功能:而第二個得到一個錯誤標記 Syntax error on token "(", Type expected after this token
Java的使用?在泛型編程
我不明白爲什麼
public <T> void f1 (List<? extends Object> a) {
System.out.println(a);
}
public void f2 (<? extends Object> a) {
System.out.println(a);
}
第一個函數被接受。有人能幫我嗎?
編輯: 讓我改述一切。 我有一個類
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,什麼將要打印的東西,其類型爲「?擴展對象」。 爲什麼編譯器在f2上放置一個標記?
您需要添加一個類型的通用。在第一種情況下,它是一個'List' – Jens
[rtfm](https://docs.oracle.com/javase/tutorial/extra/generics/wildcards.html) – kajacx
您需要在'public void f2( <?擴展對象> a){'。你錯過了,直接打開一個括號。在f2之後檢查(... –