泛型類別本身就是資料形態,可用來宣告物件。
使用時要注意轉換型態或介面 type casting,否則在執行時 run time 會發生 ClassCastException。
class GenericNumber <T>{
private T number;
public void setNumber(T number){
this.number = number;
}
public T getNumber(){
return number;
}
}
public class GenericsUndefined {
public static void main(String[] args) {
GenericNumber <Integer> i = new GenericNumber <Integer>();
i.setNumber(10);
System.out.println("Integer value : " + i.getNumber());
GenericNumber <Boolean> f = new GenericNumber <Boolean> ();
f.setNumber(true);
System.out.println("Boolean value : " + f.getNumber());
GenericNumber <Double> d = new GenericNumber <Double> ();
d.setNumber(10.5);
System.out.println("Double value : " + d.getNumber());
}
}
執行結果
以泛型類別方法寫程式時,若不同型別做指定, 例如 d = i ; 時,編譯會出現如下錯誤
Exception in thread "main" java.lang.Error: Unresolved compilation problem: Type mismatch: cannot convert from GenericNumberto GenericNumber at GenericsUndefined.main(GenericsUndefined.java:28)
沒有留言:
張貼留言