在泛型應用中得特別小心,否則會出現一些莫名奇妙的錯誤資訊,例如
public inte***ce box
在如下使用該介面時
public void dobox(box<?> box)
該方法看上去可以執行,但實際上不行,編譯器會提示(大概意思):"capture#453 of ? not being compatible with object "
其中capture#453 of ? 是乙個佔位符,是編譯器為該例萬用字元"?"指定的乙個名字.
要使用好泛型,可以注意下面兩個訣竅:
1、capture helper
針對dobox()方法可以這樣修改一下:
public void dobox(box<?> box)
privatevoid doboxhelper(boxbox)
這樣這段**可以執行了,因為此時在doboxhelper()中,box.get()返回的型別不是object,而是型別v
2、generic factory
一般在構造泛型例項時這樣操作
boxbox= new box;
這違反了dry原則(don't repeat yourself ),從而可以這樣修改一下:
public class boxfactoryimplements box
......
}在這裡用到了編譯器只能在泛型方法中進行推斷型別引數的特性!先寫到這裡了!
泛型 泛型入門 萬用字元 泛型的其它應用
泛型可以解決資料型別的安全性問題,它主要的原理是 是在類宣告的時候通過乙個標識表示類中某個屬性的型別或者是某個方法的返回值及引數型別。這樣在宣告類或例項化的時候只要指定好需要的型別即可。泛型的定義格式 訪問許可權 class 類名稱 泛型型別1,泛型型別2,泛型型別3 訪問許可權 返回值型別宣告 方...
泛型的應用
泛型的應用 泛型可以解決資料型別安全性問題,其主要原因是在類的宣告時通過乙個標識表示類中某個屬性或者某個方法的返回值以及引數型別。這樣在類宣告或例項化時只要制定好需要的型別即可。加入泛型後將使程式的操作更加安全 加入泛型的最大好處實際上就是避免了型別轉化異常 classcastexception 的...
泛型的應用(類,方法)
泛型在類定義上的應用 public class mygeneric public e getobj 建立物件如下 mygenericmg new mygeneric mg.setobj 你好 system.out println mg.getobj mygenericmgs new mygeneri...