泛型類別本身就是資料形態,可用來宣告物件。
使用時要注意轉換型態或介面 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)
沒有留言:
張貼留言