泛型

泛型是什么

泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,

此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。

ArrayList list = new ArrayList();
        list.add("abc");
        list.add(123);

集合在不指定泛型类型的情况下,可以添加任意引用类型。会导致意外的错误发生。也可以将运气期间的错误提前到编译器,如果指定泛型类型,那么不符合要求的类型编译不会通过。

泛型类、泛型接口、泛型方法

泛型类,泛型参数定义于类名之后,<> 中定义的是泛型的形参,多个形参之间逗号隔离

public class GenericClass<T,E> {
    T t;

    public T getT() {
        return t;
    }

    public void setT(T t) {
        this.t = t;
    }
}

泛型接口,定义与泛型类相似

public interface GenericInterface<K,V>{
    public abstract V  getValue(K k);
}

泛型方法,泛型参数定义在返回值类型之前

public <T> void sleep(T t){
        System.out.println(t);
    }

通配符、上下边界通配符

泛型通配符: ?

上边界通配符:<? super E>

下边界通配符:<? extends E>

通配符出现的原型是:集合没有协变,数组支持协变(多态)

泛型通配符不用于定义对象,用于方法接收参数

参考:https://www.cnblogs.com/yangming1996/p/9199557.html

原文地址:https://www.cnblogs.com/bytecodebuffer/p/11927804.html