泛型使用场景

1 泛型集合

public class ArrayList<E>{

}

对E这个类型进行操作。

2 泛型类

public class FanXing<T> {

    public T t;

    public T getT() {
        return t;
    }

    public FanXing(T t) {
        this.t = t;
    }

    public static void main(String[] args) {
        FanXing<String> fx1 = new FanXing<>("a");
        FanXing<Integer> fx2 = new FanXing<>(1);
        System.out.println(fx1.getT().getClass());  //java.lang.String
        System.out.println(fx2.getT().getClass());  //java.lang.Integer
    }

}

直接利用泛型来定义成员变量。

3 泛型接口

public interface IFanXing<T1, T2> {
    T1 show1(T2 t);

    T2 show2(T1 t);
}
public class FanXing implements IFanXing<String, Integer> {

    @Override
    public String show1(Integer t) {
        return String.valueOf(t);
    }

    @Override
    public Integer show2(String t) {
        return Integer.valueOf(t);
    }

    public static void main(String[] args) {
        FanXing fanXing = new FanXing();
        System.out.println(fanXing.show1(1));  //1
        System.out.println(fanXing.show2("1"));  //1
    }

}

直接利用泛型来定义参数类型。

4 泛型方法

定义泛型方法只需将泛型参数列表置于返回值之前;利用泛型来定义参数类型。

4-1 普通泛型方法

public class FanXing {

    public <T> void f(T t){
        System.out.println(t.getClass().getName());
    }

    public static void main(String[] args) {
        FanXing fanXing = new FanXing();
        fanXing.f("");      //java.lang.String
        fanXing.f(1);       //java.lang.Integer
        fanXing.f(1.0);     //java.lang.Double
        fanXing.f(1.0F);    //java.lang.Float
        fanXing.f('a');     //java.lang.Character
    }

}

4-2 静态泛型方法

静态方法无法访问泛型类的类型参数,如果方法需要使用泛型能力,就必须使其成为泛型方法。

public static <T> void f(T t){
    System.out.println(t.getClass().getName());
}

public static void main(String[] args) {
    FanXing.f("");      //java.lang.String
    FanXing.f(1);       //java.lang.Integer
    FanXing.f(1.0);     //java.lang.Double
    FanXing.f(1.0F);    //java.lang.Float
    FanXing.f('a');     //java.lang.Character
}
posted @   南翔技校毕业后  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结
点击右上角即可分享
微信分享提示