泛型:泛型类,泛型接口,泛型方法

2019-11-06  本文已影响0人  木头与琉璃

泛型类

同一个Holder类,在使用的时候可以灵活的持有String类型的类型参数和Interger类型的类型参数

public class 泛型类 {

    public static void main(String[] args){
        Holder<String> holder1 = new Holder("test");
        System.out.println(holder1.getA()); // 输出结果:test
        Holder<Integer> holder2 = new Holder(2);
        System.out.println(holder2.getA()); // 输出结果:2
    }

    static class  Holder<T>{
        private T a;
        public Holder1(T a){
            this.a = a;
        }

        public T getA() {
            return a;
        }
    }
}

泛型接口

同一个接口Genericitor,可以衍生两个不同类型参数的实现类:GenericitorString和GenericitorInteger

public class 泛型类与泛型接口与泛型方法 {

    public static void main(String [] args){
        System.out.println(new GenericitorString().next());  //执行结果:hello this is GenericitorString implements Genericitor<T>
        System.out.println(new GenericitorInteger().next()); //执行结果:1
    }

    interface Genericitor<T>{
        T next();
    }

    static class GenericitorString implements Genericitor<String>{
        @Override
        public String next() {
            return "hello this is GenericitorString implements Genericitor<T>";
        }
    }

    static class GenericitorInteger implements Genericitor<Integer>{
        @Override
        public Integer next() {
            return 1;
        }
    }
}

泛型方法

同一个方法泛型方法genericitorFunction,使用的时候可以传入不同的类型参数。

public class 泛型方法 {
    static class Genericitor{
        public <T> void genericitorFunction(T x){
            System.out.println(x.getClass().getName());
        }
    }

    public static void main(String[] args){
        Genericitor g = new Genericitor(); 
        g.genericitorFunction("string"); //输出结果:java.lang.String
        g.genericitorFunction(1); //输出结果:java.lang.Integer
        g.genericitorFunction(1.0F); //输出结果:java.lang.Float
        g.genericitorFunction(1.0); //输出结果:java.lang.Double
    }
}

上一篇 下一篇

猜你喜欢

热点阅读