java中的泛型

Posted 苦瓜爆炒牛肉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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以及其父类

以上是关于java中的泛型的主要内容,如果未能解决你的问题,请参考以下文章

Java中的泛型的问题?

java中的泛型

浅谈Java中的泛型

Java 基础语法详解 Java 中的泛型

Java 基础语法详解 Java 中的泛型

Java中的泛型