java中关于泛型的问题

来源:互联网 发布:java装环境变量的作用 编辑:程序博客网 时间:2024/05/20 23:40

今天闲来无事看了一篇文章,只关于java中的泛型问题,看了这篇文章才发现自己之前对泛型的了解只属于皮毛,现在简单总结下我从这篇文章中学到的,泛型就是把类型参数化,可用于类,接口,方法中。使用泛型可以消除显示的强制类型转换,还可以提供更强的类型检查。其中的有界泛型分为两种一种是<? extends T>就是"上界通配符"还有一种是<? super T>就是下界通配符,,这其中有一个坑,我之前的理解就是<? extends T>是T及其T的子类,如List<? extends T>可以存放T及其T的子类,其实并不是他指的只是T的某一不确定的子类,不是具体化的,所以不能放入任何具体的类型到list中,但可以从中读取T或T的子类。而对于List<? super T>同理,他并不是可以存放T及其T的父类类型,他也是仅指T的某一个不确定的父类,所以可以向其中添加T和T的子类元素,但是不可以添加T的父类对象。可以读取到Object及其Object的子类。

如果是频繁支持读操作,不要求写操作,可以使用<? extends T>,而对于频繁支持写操作,不要求读操作的可以使用<? super T>,如果都需要支持可以使用<T>.

以下是测试代码






其中注释掉的是编译不通过的,最后的代码是测试泛型类型擦除。