首页 > Java > java教程 > 正文

Java中泛型的用法总结

高洛峰
发布: 2017-01-18 11:19:58
原创
1540人浏览过

本文实例总结了java中泛型的用法。分享给大家供大家参考。具体如下:

1 基本使用

public interface List<E> {
 void add(E);
 Iterator<E> iterator();
}
登录后复制

2 泛型与子类

Child是Parent的子类,List<Child>却不是List<Parent>的子类。
因此:List<Object> list = new ArrayList<String>()是错误的。
如果上面是正确的,那么:

立即学习Java免费学习笔记(深入)”;

List<String> ls = new ArrayList<String>(); //1
List<Object> lo = ls; //2
lo.add(new Object()); // 3
String s = ls.get(0); // 4,将object转换为string将失败。
登录后复制

3 wildcards

因为2的原因,下面的实现用于统配集合的输出是不行的

void printCollection(Collection<Object> c) {
 for (Object o: c) {
 // do something
 }
}
登录后复制

因此,需要通配符?:

void printCollection(Collection<?> c) {
 for (Object o: c) { // 1
 // do something
 }
} // ok
登录后复制

此处的?表示类型未知,但是任何对象均是Object,因此上例的1是正确的。但下例却是错误的:

void add(Collection<? extends MyClass> c) {
 c.add(new MyClass()); // wrong
} // ok
登录后复制

原因也很明确,? extends MyClass说明类型是MyClass的子类,但是却并不知道具体类型

PHP的使用技巧集
PHP的使用技巧集

PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。它可以比 CGI或者Perl更快速的执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多。下面介绍了十个PHP高级应用技巧。 1, 使用 ip2long() 和 long2ip() 函数来把 IP 地址转化成整型存储到数据库里

PHP的使用技巧集 440
查看详情 PHP的使用技巧集

4. 泛型方法

上例可以实现为:

<T> add(Collection<T> c, T t) {
 c.add(t);
}
登录后复制

编译器在保证语义的前提,会帮忙做类型的转换工作。

5. 泛型运行时的对比

List<String> l1 = new ArrayList<String>();
List<Integer> l2 = new ArrayList<Integer>();
System.out.println(l1.getClass() == l2.getClass()); // true
登录后复制

因为泛型类运行时时一样的。

6 泛型数组(可能导致类型不安全)

List<String>[] lsa = new ArrayList<String>[10]; // error
登录后复制

如果可以的话,可能导致类型不安全。如:

Object o = lsa;
Object []oa = (Object[])o;
List<Integer> li = new ArrayList<Integer>();
li.add(new Integer(3));
oa[1] = li;
String s = lsa[1].get(0); // runtime error
登录后复制

希望本文所述对大家的java程序设计有所帮助。

更多Java中泛型的用法总结相关文章请关注PHP中文网!

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号