Java学习5(泛型初识及其相关)
来源:互联网 发布:支付宝无网络离线付款 编辑:程序博客网 时间:2024/06/03 21:53
- 泛型初识
注意
泛型有子类型化的规则,List是原生态类型List的一个子类型,List也是,但是List并不是List的子类型,即便看起来它们”相等”。举个栗子:
public class Test{
public static void main(String[] args){
List<String> strs = new ArrayList<String>();
unsafeAdd(strs,new Integer(20));
String s = strs.get(0); //编译没问题,运行时会出错ClassCastException
}
public static void unsafeAdd(List<Object> list,Object o){
list.add(o);
}
}
解决这种问题,似乎只要将子类型改为原生类型就可以了,但是无疑很危险,这时候就用到了无限制的通配符类型
- 无限制通配符类型
如果不确定参数类型,那就使用?,例如
List<?>
这样也会有新的问题出现,由于不确定参数类型,你可以放一个Integer也可以放入String,这就违背了该集合的类型约束条件。怎么解决呢?
- 泛型方法/有限制的通配符类型
待学习。。。
问题思考:
//fail on runtimeObject[] o = new Long[1];o[0] = "hello";
//will not compileList<Object> list = new ArrayList<Long>();list.add...
附录:
List<String>
实际类型参数 String 泛型 List<E>
形式类型参数 E 无限制通配符类型 List<?>
有限制通配符类型 List<E extends Number>
原生类型 List 递归类型限制 <T extends Comparabel<T>>
泛型方法 static <E> List<E> asList(E[] a)
类型令牌 String .class`
0 0
- Java学习5(泛型初识及其相关)
- xml学习及其相关
- Java 泛型初识
- java -- 初识泛型
- java学习 初识java
- 初识Hadoop及其名词解释---Hadoop学习(1)
- 学习资料 初识java
- 学习RMI及其相关技术
- java基础-java相关技术的初识
- Java学习记录--初识java
- Java学习笔记:初识Java
- Java学习笔记--初识NIO
- Java学习笔记--数据库初识
- JAVA基础学习20171024-初识
- scala-00:初识scala及其学习环境搭建
- CSS学习笔记1:初识CSS及其常见属性
- ActiveMQ学习(二)初识AMQ及其下载安装
- Java容器学习笔记(二) Set接口及其实现类的相关知识总结
- 验证码识别(Tess4J初体验)
- Android ConstraintLayout完全解析
- STL:vector中push_back实现斐波纳契数列计算
- 简单封装ajax的get和post请求
- JAVA面对对象(五)——接口
- Java学习5(泛型初识及其相关)
- iOS开发-从app跳转到第三方应用和调用系统功能
- 解决修改css文件或js文件后浏览器无法及时更新的问题方法
- 微信公众号的“温柔一刀”,搜狗微信搜索部分功能将被下线
- perl socket 客户端发送消息
- 【leetcode】 subset I、II
- Matlab长时间运行越来越慢的问题
- Maven自动部署Tomcat错误排除
- 基于SIP的视频会议系统结构和原理