Java泛型用法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java泛型用法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1449字,纯文字阅读大概需要3分钟。
内容图文
请问,为什么要在左侧(变量声明)和右侧(对象分配)提供Generic类?
从技术上讲,我可以向左或向右跳过它(请参阅alist2或aList2),与aList1相比,aList2和aList3的缺点是什么?
ArrayList<String> aList1 = new ArrayList<String>();
ArrayList<String> aList2 = new ArrayList();
ArrayList aList3 = new ArrayList<String>();
奖金问题刚刚出现在我的脑海中,并且可以编译,但是对于aList4和aList5意味着什么?
ArrayList<String> aList4 = new ArrayList<>();
ArrayList<?> aList5 = new ArrayList<String>();
先感谢您.
亲切的问候,
赫尔曼
解决方法:
ArrayList是原始类型. Java Spec says关于它们的以下内容:
The use of raw types is allowed only as a concession to compatibility of legacy code. The use of raw types in code written after the introduction of generics into the Java programming language is strongly discouraged. It is possible that future versions of the Java programming language will disallow the use of raw types.
ArrayList<?>是通配符类型,特别是所有ArrayList的超级类型,无论它们的类型参数如何.由于我们不知道List中元素的类型,因此与普通的ArrayList相比,您可以执行的操作更少.例如,您不能向其添加除null以外的任何内容,并且从列表中获取的每个信息都仅被称为对象.
ArrayList<>是ArrayList< X>的简写符号,其中X用赋值左侧的type参数替换.即,ArrayList< String> list = new ArrayList<>()完全等效于ArrayList< String>. list = new ArrayList< String>(). Diamond运算符仅在Java 7和更高版本中存在,并且只能在编译器足够聪明地推断出类型的地方使用,但是在这些情况下,它通常是使用类型最正确和简洁的泛型方法.
内容总结
以上是互联网集市为您收集整理的Java泛型用法全部内容,希望文章能够帮你解决Java泛型用法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。