2018年12月21日 星期五

泛型類的好處

每次看泛型的文章,都無法好好感受到底那個差異在哪邊,於是自己實作來感受一下。

可惡,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();
        }
    }
}

沒有留言:

張貼留言