Java——泛型集合

  Java 集合有一个缺点——把一个对象 “丢进” 集合里之后,集合就会 “忘记” 这个对象的数据类型,当再次取出该对象时,该对象的编译类型就变成了 Object 类型(其运行时类型没变)。集合对元素类型没有任何限制,这样可能引发一些问题。例如,想创建一个只想保存Dog 对象的集合,但程序也可以轻易的将字符串类型数据“丢” 进集合当中。

Dog ououDog=new Dog("欧欧","雪纳瑞");
        
Dog yayaDog=new Dog("亚亚","拉布拉多");
        
List list = new ArrayList();
        
list.add(ououDog);
list.add(yayaDog);
list.add("李小龙");
list.add("成龙");
        
for (Object object : list) {
    Dog dog=(Dog)object;
    System.out.println(dog.getName());
}

   

  行运上面的代码会发现,List 集合只知道它盛装的是Object,要想得到Dog 对象当中的数据时,只能通过强制类型转换,但是这个 List 集合当中存储的不光有 Dog 对象,还有字符串的数据类型,在输出的时候会发生异常  java.lang.ClassCastException, 那么这么解决这种问题呢?

 

List<Dog> list = new ArrayList<Dog>();
    
list.add(ououDog);
list.add(yayaDog);
        
//list.add("李小龙");    //这行代码将引起编译错误,因为 list 对象只可以存储 Dog 对象 啊·
        
for (Dog dog : list) {
    System.out.println(dog.getName());
}

  上面程序成功创建了一个特殊的List集合,这个集合当中只能保存 Dog 对象,不能保存其它类型对象。创建这种特殊的集合方法是:在集合接口、类后增加尖括号,尖括号里放一个数据类型或对象,即表明这个接口、集合类只能保存特定类型对象,创建 List 对象的时候,指定 list不是任意的 List,而是一个 Dog 对象类型的 List,写作 List<Dog>。可以称为List是带一个类型参数的泛型接口。在创建ArrayList 对象时也指定了一个类型参数。而且,当遍历的时候也不需要强制转换类型。避免发生异常。

 

转载于:https://www.cnblogs.com/szj-ang/p/7382977.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值