JAVA泛型注意点
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JAVA泛型注意点,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2549字,纯文字阅读大概需要4分钟。
内容图文
![JAVA泛型注意点](/upload/InfoBanner/zyjiaocheng/629/0f53b3dac6084ea1af8e3ab30817ae76.jpg)
java泛型
*泛型运用的时候应该注意两种情况,一般,也是这么建议使用的
* 1.使用泛型时:? extends T
* 我们只知道容器原本存放的是T和子类
* 同时设置了上限,不能通过add添加数据,但是可以获取数据给父类及其子类。
* 注意:d但是并不能够通过add对其中进行添加元素,先记住,等下说为什么。但是可以获取其中的元素
? extends T
//存放student类型的集合
ArrayList<Student> students1 = new ArrayList<>();
//存放几个数据
students1.add(new Student());
students1.add(new Student());
students1.add(new Student());
students1.add(new Student());
//注意这里添加Student类型
List<? extends People> people1 =students1;
//给people1添加数据
People people = new People();
people1.add(people);//会报错
Student student = new Student();
people1.add(student);//会报错
//获取people1的数据
People people2 = people1.get(0);
Student student1 = people1.get(1);//会报错
总结 ? extends T
*
* 就像我上面所说,? extends T
* 的集合只能够存放子类及其本身,在存取上,只能在初始的时候存放,取得时候只能赋值给最高父类
* 通过上面的内容,我们不难看出原因,为什么不能够存放呢?
* 因为我们并不知道里面可以放什么People,男人?还是女人?我们不知道放的是什么,所以不能够放再继续放元素
* 就是说,设置了上限,比他高的肯定放不了,比他低的我们并不知道低到什么情况,所以干脆不让他添加了。
* 为什么能够取元素呢?
* 因为我们虽然不知道里面存放的是哪种People,男人?还是女人?但是我们知道我们取出来一定是People(人),
* 不管取出来的是父类类型,还是子类类型,都可以给父类,如果是子类,就相当于多态写法
*/
? super T
*泛型运用的时候应该注意两种情况,一般,也是这么建议使用的
* 2.使用泛型时:? super T
* 设置了下限
* 注意:能够通过add对其中进行添加元素子类及其本身类型,先记住,等下说为什么。
* 获取其中的元素的时候只能将其赋值给Object,为什么呢?带着这个疑问往下看。
//存放student类型的集合
ArrayList<People> people4 = new ArrayList<>();
//存放几个数据
people4.add(new People());
people4.add(new People());
people4.add(new People());
people4.add(new People());
ArrayList<? super People> People5=people4;
People5.add(new Student());
People5.add(new People());
//看到没,报错了,不能把获取的数据给子类和本身,存放的是People都不能给,
// 当然,更加不能给子类啦
People people5=People5.get(1);//会报错
Object object = People5.get(0);
总结 ? super T
* 咋们来说一下,为什么能够add添加子类及其本身类型元素
* <? super People>我们只知道,容器原本放的是People及其父类类型
*假如原本是Animal类型还好,可以存Animal,但是如果是People就不能存放Animal。
* 低的类型肯定能放进去,但是高的并不知道高到什么情况,所以干脆也不让放了
* 而对于本身和子类我们可以保证添加进去的绝对满足可存放的要求即比原本容器低,可以转换
* 不能获取的原因是:由于不知道你获取得到的是什么类型,所以如果要获取只能赋值给Object.
内容总结
以上是互联网集市为您收集整理的JAVA泛型注意点全部内容,希望文章能够帮你解决JAVA泛型注意点所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。