标签:
public class GenericDemo { public static void main(String[] args) { //学习泛型之后的正确的做法,加入泛型 List<String> list = new ArrayList<String>(); list.add("abc"); list.add("ab是啊c"); list.add("ab是c"); // list.add(6); 编译报错,这就是泛型的好处体现之一, //将运行时期的ClassCastException异常转移到编译时期通过编译失败体现。 /*List list = new ArrayList(); 实验完毕注释掉 list.add("string"); 实验完毕注释掉 list.add("5"); 实验完毕注释掉 list.add(6); //发现问题: 编译并不报错 */ /*我们遍历一下集合,看看有没有其他问题*/ for(Iterator<String> it = list.iterator();it.hasNext();){ // Object obj = it.next(); 实验完毕注释掉 // System.out.println(obj); 实验完毕注释掉 /* 打印结果也并无异常 string 5 6 * */ /*为什么没问题呢?因为System.out.println(obj.toString()),调用了toString方法*/ /*那么现在,需求改变,需要打印字符串长度,做法如下*/ String str = /*(String)*/ it.next(); //字符串长度是String的特有方法,强转是必然的 /*注意: 定义了泛型,自然不需要强转了 *这也是泛型好处的另一种体现:避免了强转的麻烦!*/ System.out.println(str.length());//思考:此时再输出会怎么样? /* java.lang.ClassCastException: java.lang. * Integer cannot be cast to java.lang.String * 异常: 类型不能转换异常. * 集合中存储元素时,如果存的对象很多,而且对象类型不相同,会出现安全隐患. * */ } } }
标签:
原文地址:http://www.cnblogs.com/zyjcxc/p/5453345.html