java中的泛型

1.什么是泛型

阅读jdkAPI文档时,经常会见到<E>。其实这就是泛型。例如Collection<E>代表的是集合里只能放某一个类的对象。

2.泛型的好处

(1)提高安全性(将运行期的错误转换到编译期)

(2)省去强转的麻烦

3.泛型的基本使用

<>中放的必须是引用数据数据类型

 public static void main(String[] args) {
        ArrayList<Students> arrayList = new ArrayList<>();
        arrayList.add(new Students("张三",13));
        arrayList.add(new Students("李四",14));
        arrayList.add(new Students("王五",15));

        ListIterator<Students> it = arrayList.listIterator();
        while (it.hasNext()){
            Students s = it.next();
            System.out.println(s);
        }
    }

4.泛型使用注意事项

前后的泛型必须一致,或者后面的泛型可以省略不写(JDK1.7的新特性菱形泛型)

5.编写泛型类

public class Tools<E> {
    private E e;

    public E getObj(){
        return e;
    }

    public void setObj(E e){
        this.e = e;
    }
}

6.编写泛型方法

public class Test12 {
    public<E> void show(E e){
        System.out.println(e);
    }

    public static void main(String[] args) {
        Test12 t = new Test12();
        t.show(true);
    }
}

注意:如果是编写泛型类的时候,里面有静态方法,静态方法必须声明自己的泛型。因为静态方法是随着类的加载而加载的,这时候还没有对象。

public class Tools<E> {
    private E e;

    public E getObj(){
        return e;
    }

    public void setObj(E e){
        this.e = e;
    }
    public static<T> void show(T t){
        System.out.println(t);
    }
}

7.编写泛型接口

interface Inter<T>{
    public abstract void show(T t);
}
public class Test13 implements Inter<String>{
    @Override
    public void show(String s) {
        System.out.println(s);
    }
}

8.泛型通配符

? 可以代表任意类型

? extends E  向下限定,可以表示E以及其子类

? super E  向上限定,可以表示E以及其父类

原文地址:https://www.cnblogs.com/chichung/p/10249153.html