码迷,mamicode.com
首页 > 编程语言 > 详细

java中的泛型

时间:2019-01-10 13:17:24      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:泛型类   通配符   []   子类   span   public   iter   新特性   ret   

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中的泛型

标签:泛型类   通配符   []   子类   span   public   iter   新特性   ret   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!