社区
Java SE
帖子详情
java 泛型 通配符
fwaction
2009-12-15 04:22:45
这个始终不太理解。。谁能讲解一下.
thanks.
...全文
83
2
打赏
收藏
java 泛型 通配符
这个始终不太理解。。谁能讲解一下. thanks.
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hugogoo
2009-12-15
打赏
举报
回复
Set<? extends Customer>这样的一个数据结构是指一个Set,这个里面Set存放的元素可以是任意继承或实现Customer的对象。根据上述代码Customer是个基类或接口,而CustomerImpl是Customer的子类或实现,上述代码的意义在于,用户只知道返回的是元素为Customer的Set,但是具体是什么内部实现,比如是CustomerImpl还是CustomerImpl2用户并不关心,说到底这是引入generic的一种多态性的体现。这也是一种工厂模式!
hugogoo
2009-12-15
打赏
举报
回复
1.先解释最中间的括号:某一个对象A继承了K这个类,某一个对象B继承V这个类
2. Map.Entry是map中的一个方法,该方法可以返回一个对象的集合,那么现在得这个集合就是,A,B所组成的集合
3.iterator迭代器类似于for循环,将A,B这个集合迭代出来,取出A,B单独的对象
Java
泛型
通配符
详解
对于 super 类型>,编译器将只允许写操作,不允许读操作。即只可以设值(比如set操作),不可以取值(比如get操作)。 对于 extends 类型>,编译器将只允许读操作,不允许写操作。即只可以取值,不可以设值。 以上两点都是针对于源码里涉及到了类型参数的函数而言的。比如对于List而言,不允许的写操作有add函数,因为它的函数签名是boolean add(E e);,此时这个形参E就变成了一个涉及了
通配符
的类型;而不允许的读操作有get函数,因为它的函数签名是E get(int index)
Java
泛型
&
通配符
Java
泛型
(Generics)是 JDK 5 引入的一个新特性,它提供了编译时类型安全检测机制,允许在编译时检测出非法的类型。
泛型
的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。
泛型
擦除是指在编译过程中,
Java
编译器会将
泛型
类型信息擦除,将
泛型
类型转换为原始类型(Raw Type),也就是去掉
泛型
参数的类型信息,使得在运行时无法获取
泛型
的实际类型参数。例如,编译器会在编译期间动态地将
泛型
T 擦除为 Object 或将 T extends xxx 擦除为其限定的类型 xxx。
Java
泛型
使用
通配符
ArrayList
泛型
,JDK1.5新加入的,解决数据类型的安全性问题,其主要原理是在类声明时通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。使用
泛型
时,
泛型
类型必须为引用数据类型,不能为基本数据类型,
Java
中的普通方法,构造方法,静态方法中都可以使用
泛型
,方法使用
泛型
之前必须先对
泛型
进行声明,可以使用任意字母,一般都要大写。在引入范型之前,要在类中的方法支持多个数据类型,就需要对方法进行重载,在引入范型后,可以解决此问题(多态),更进一步可以定义多个参数以及返回值之间的关系。
Java
泛型
中
通配符
的使用详解
?extends T>确定了上界为T,那么获取值时类型一定是T或T的父类,但赋值时由于不能确定具体是T或者T的某个子类而赋值失败。
【
Java
基础】
Java
泛型
和
泛型
通配符
详解
Java
泛型
的详解,总结了
泛型
通配符
所有的含义,以及用法,并且说明了各个用法之间的区别。
Java SE
62,620
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章