JAVA——泛型
2016-05-09 00:30
537 查看
泛型:JDK1.5以后出现的新特性。用于解决安全问题,是一个安全机制;
好处:
1、将运行时期出现问题classCastException,转移到了编译期间,方便于程序员解决问题,让运行时问题减少,安全
2、避免了强制转换麻烦
泛型格式:通过<>来定义要操作的引用数据类型。
在使用java提供的对象时,什么时候写泛型呢?
通常在集合框架中很常见;
其实<>就是用来接收类型的。
当使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可。
出现了这个情况,为什么呢?
因为 al.add(3);系统自动装箱会new Integer(3);变为Integer对象。但是,迭代器中存放了添加进去的元素。
Iterator it = al.iterator();
String s = (String)it.next();
这样会ClassCastException;
所以我们可以这么做:
结果:
hello…5
bb…2
I love you !…12
好处:
1、将运行时期出现问题classCastException,转移到了编译期间,方便于程序员解决问题,让运行时问题减少,安全
2、避免了强制转换麻烦
泛型格式:通过<>来定义要操作的引用数据类型。
在使用java提供的对象时,什么时候写泛型呢?
通常在集合框架中很常见;
其实<>就是用来接收类型的。
当使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可。
import java.util.*; class GenericDemo { public static void main(String[] args) { ArrayList al = new ArrayList(); al.add("hello"); al.add("pp"); al.add("I love you !"); al.add(3); Iterator it = al.iterator(); while(it.hasNext()) { String s = (String)it.next(); System.out.println(s+"..."+s.length()); } } }
出现了这个情况,为什么呢?
注: /Users/wangliqiang/Desktop/JAVA/BXD/GenericDemo.java使用了未经检查或不安全的操作。 注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。 hello...5 pp...2 Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String at GenericDemo.main(GenericDemo.java:22) I love you !...12
因为 al.add(3);系统自动装箱会new Integer(3);变为Integer对象。但是,迭代器中存放了添加进去的元素。
Iterator it = al.iterator();
String s = (String)it.next();
这样会ClassCastException;
所以我们可以这么做:
class GenericDemo { public static void main(String[] args) { ArrayList <String>al = new ArrayList<String>(); al.add("hello"); al.add("bb"); al.add("I love you !"); Iterator <String>it = al.iterator(); while(it.hasNext()) { String s = it.next(); System.out.println(s+"..."+s.length()); } } }
结果:
hello…5
bb…2
I love you !…12
相关文章推荐
- 重新学javaweb---过滤器 应用--全站乱码
- 20145230《java程序设计》第五次实验报告
- SpringMVC的第一个案例 Helloword 步骤
- 20145301《Java程序设计》第10周学习总结
- spring-core组件详解——PropertySource属性源
- spring-core组件详解——环境体系
- struts2拦截器详解
- SpringMvc返回@ResponseBody中文乱码
- springMVC 与 struts+hibernate+spring优缺点
- Hibernate中SessionFactory的理解(转载)
- Java中的内部类
- Java中继承应当注意
- Java中多态应当注意
- Java并发之Condition与Lock
- Java程序测试
- 解决JNA动态加载jar中dll问题
- JNA 基础篇<一> 初识JNA
- Struts2的配置文件的位置&加载顺序
- Struts2常量配置&常用常量
- mac java开发踩过的坑