java泛型

原文地址

类型明确的工作推迟到创建对象或调用方法的时候才去明确的特殊的类型

泛型类

public class ObjectTool<T> {
    private T obj;

    public T getObj() {
        return obj;
    }

    public void setObj(T obj) {
        this.obj = obj;
    }
}

泛型方法

public static void main(String[] args) {
    Main main = new Main();
    main.show("haha");
    main.show(123);
}

//定义泛型方法..
public <T> void show(T t) {
    System.out.println(t);
}

类型通配符

java泛型_第1张图片
该test()方法只能遍历装载着Object的集合
泛型中的并不是像以前那样有继承关系的,也就是说List和List是毫无关系的
所以代码应该改成这样:

public void test(List<?> list){
    for(int i=0;i<list.size();i++){
        System.out.println(list.get(i));  
    }
}

设定通配符上限

List集合装载的元素只能是Number的子类或自身

public static void main(String[] args) {
    ArrayList<Number> list = new ArrayList<>();
    list.add(18) ;
    list.add(18) ;
    list.add(18) ;
    test(list) ;
}
public static void test(ArrayList<? extends Number> list) {
    for (Object o : list) {
        System.out.println(o);
    }
}

只能读不能写java泛型_第2张图片

设定通配符下限

List集合装载的元素只能是Number的父类或自身
可以写

java泛型_第3张图片
List集合不能装载子类元素
java泛型_第4张图片

你可能感兴趣的:(Java)