泛型類與方法混合使用,及靜態方法使用泛型


泛型類 與泛型方法 混合使用

靜態方法 與 泛型

package javabasis.fanxing;

import org.junit.Test;

/*
*
* 泛型類與泛型方法的混合使用
* 1. 泛型類對應的方法 及 泛型方法區別
* 2. 參數定義名稱
* 3. 靜態方法使用泛型
*
* */
class FanXingClassAndMethod<T> {

    private T param;

    public FanXingClassAndMethod(T param) {
        this.param = param;
    }

    //泛型類中的方法,非泛型方法
    public T getParam11(T param) {
        this.param = param;
        return param;
    }

    //泛型方法
    public <T> T getParam21(T param) {

        return param;
    }

    //此方法用於對比, 編譯器直接會報異常,因為此方法是依附於泛型類定義的,沒有K類型,只有T類型
//    public K getParam12(K param) {
//        return param;
//    }

    //泛型方法  可以定義K不受泛型類影響
    public <K> K getParam22(K param) {

        return param;
    }

    //靜態方法 使用泛型,只能聲明為泛型方法,無法依托於泛型類,因為靜態方法早於類編譯
    public static <T> T staticMethod(T param) {
        return param;
    }
}


public class NO3FanXing1 {

    @Test
    public void test() {
        /*
        * 1. 泛型類中的方法與 泛型方法比較
        * */

        FanXingClassAndMethod<Integer> fanXingClassAndMethod = new FanXingClassAndMethod<>(456);
        //泛類中的方法,類型限制為Integer,無法是String
        fanXingClassAndMethod.getParam11(454545);
//        fanXingClassAndMethod.getParam11("dsfadfsf");

        //泛型類方法則不受限制
        fanXingClassAndMethod.getParam21("123123213");

    }

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM