泛型类与方法混合使用,及静态方法使用泛型

泛型类 与泛型方法 混合使用

静态方法 与 泛型

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");

    }

}

posted @ 2019-05-29 16:30  生画微机  阅读(1896)  评论(0编辑  收藏  举报