可惡,blogger貼程式碼都會跑掉!!!
public class 泛型差異 { //定義一個工具基類,依業務需求會有很多衍生類,也有可能依據系統自動生成 class Tool { } //範例 衍生子類 好工具 class GoodTool extends Tool { //使用好工具 public void useGetTool() { } } //範例 衍生子類 壞工具 class BadTool extends Tool { //使用壞工具 public void useBadTool() { } } //把它想成Fragment class Something { } //在抽象類使用泛型 abstract class Base1<SV extends Tool> extends Something { SV mTool; } //在抽象類不使用泛型 abstract class Base2 extends Something { Tool mTool; } //寫兩個測試類繼承抽象類 理解工具類使用泛型的差異 //繼承時傳入指定泛型 GoodTool class Test1 extends Base1<GoodTool> { public Test1() { mTool = new GoodTool(); //可以直接轉型成 GoodTool 使用公開方法 mTool.useGetTool(); } } class Test2 extends Base2 { public Test2() { mTool = new GoodTool(); //必須強制轉型成 GoodTool 才能使用 ((GoodTool) mTool).useGetTool(); } } }
沒有留言:
張貼留言