5.8.1 创建类型实例
生活随笔
收集整理的這篇文章主要介紹了
5.8.1 创建类型实例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在Erased.java中對創建一個new T()的嘗試無法實現,部分原因是擦除,另一部分原因是編譯器不能驗證T具有默人構造函數。但是在C++中,可以很安全。
Java中的解決方案是傳遞一個工廠對象,并使用它來創建新的實例。最便利的工廠對象就是Class對象,因此如果使用類型標簽,可以使用newInstance()來創建這個類型的新對象:
class ClassFactory<T>{
?T x;
public classAsFactory(Class<T> kind){
? try{
?????? x=kind.newInstance();
??? }catch(Excetion e)
}
}
但是這種方法對于classAsFactory<Integer>失敗,因為Integer沒有任何默認的構造器。這個錯誤不能再編譯器期獲得。采用顯示的工廠對象
模板方法設計模式:get()是模板方法,而create()是子類中定義的,用來產生子類類型的對象:
總結
以上是生活随笔為你收集整理的5.8.1 创建类型实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 擦除
- 下一篇: 15.8.2 泛型数组