0
爲什麼編譯器不停止寫入這樣的代碼並拋出運行時錯誤。爲什麼通用類型參數的類允許在類內拋出
public class GenericTest<T,S> {
T x;
S y;
public GenericTest(T x,S y) {
this.x=x;
this.y=y;
}
void display(){
System.out.println("Display->"+((int)x)+y); //why does it throw error runtime instead of compile time?
}
}
當調用這個會明顯失敗。
public class Test {
public static void main(String[] args) {
GenericTest<String, String> s=new GenericTest<String, String>("Hello","World");
s.display();
}
}
爲什麼它允許泛型類型強制類型轉換:
System.out.println("Display->"+((int)x)+y);
當'GenericTest'被編譯,如何將編譯器知道你會使用不能被蒙上了一層類? –
如果你通過Integer ...這個程序將會工作,這將是由於自動裝箱。所以編譯器有一個有效的用例,不會拋出編譯時錯誤 – awsome
我知道它的工作與整數。但是爲什麼Java允許在類本身中轉換爲類定義的泛型,因爲它的定義表明這將允許使用任何類型構造? – iMBMT