Java泛型全解
来源:互联网 发布:南京php招聘 编辑:程序博客网 时间:2024/06/15 10:39
说到泛型,我们不得不先说说Java集合的缺点:
- 当我们把一个对象加入集合后,集合就会忘记这个对象的数据类型,当再次取出对象时,该对象的编译类型就变成了Object类型(但是运行时的类型没有改变)。
- 编译时不检查类型的异常(看下面的代码)
如果希望创建一个List对象,且该对象只能保存字符串类型,那我们可以扩展ArrayList,下面这个List集合里只能存放String对象。
看下面的代码package com.leilei;import java.util.ArrayList;import java.util.List;public class ListError { /** * @param args */ public static void main(String[] args) { //给你一个list里同时添加字符串和int数据 List strList = new ArrayList(); strList.add( "hello1"); strList.add( "hello2"); strList.add( "hello3"); strList.add(4); System. out .println(strList); //遍历数组 for (Object obj:strList){ String strList1 = (String) obj; System. out .println(strList1); } }}
----------------------运行结果---------------------[hello1, hello2, hello3, 4]hello1hello2hello3Exception in thread "main" java.lang.ClassCastException : java.lang.Integerat com.leilei.ListError.main( ListError.java:22 )可以看见strList.add(4)视图向List集合里添加一个int类型,在编译的时候并不报错,因为下面的system能成功的打印数组的信息[hello1, hello2, hello3, 4],但是在遍历数组取出List的数据时, String strList1 = (String) obj;试图将int类型转换成String类型。这个时候程序就会抛java.lang.ClassCastException 异常。在引入泛型以后(看下面的代码)package com.leilei;import java.util.ArrayList;import java.util.List;public class ListError { /** * @param args */ public static void main(String[] args) { List<String> strList = new ArrayList<String>(); //给你一个list里同时添加字符串和int数据 strList.add( "hello1"); strList.add( "hello2"); strList.add( "hello3"); strList.add(4); System. out .println(strList); //遍历数组 for (int i=0; i < strList.size(); i++){ System. out .println(strList.get(i)); } } }
在程序的17行出现了编译错误,因为在List<String>定义的时候约束了list只能接收String类型的数据。这下可以看见泛型的好处了吧。希望以上资料对大家有帮助,欢迎关注我的新浪微博:http://weibo.com/419768151
- Java泛型全解
- 泛型全解--Java基础081
- java
- JAVA
- JAVA
- JAVA
- java
- Java
- Java
- JAVA:
- java
- java
- java
- java
- Java
- java
- java
- java
- 使用Objective-C的文档生成工具:appledoc
- 程序员的浮躁症
- Android Context
- java根据日期获取农历信息
- ArcGIS Server Flex API接入MapABC地图
- Java泛型全解
- Java 调用 Shell 命令
- 找到一款不错的网站压力测试工具webbench
- Android模拟器 卸载apk文件
- myeclipse中java注释乱码的解决
- Ubuntu将man文档改为中文
- POJ 2739 Sum of Consecutive Prime Numbers
- python (paramiko模块) 利用id_rsa登陆远程的服务器
- 基于Java容器类的线程安全编程