List的小知识

List的一些用法。

现在有这样一个继承关系。
a是基类。   b   e  是他的子类  而 c  d  又是 b的子类
关系图是这样的。

例如有如下代码:
List<a>  list = Arrays.asList(new b(),new c(),new d(),new e());
这样的代码是正确的,可以编译成功。


但是 如果代码写成这样就不行了?
List<a>  list = Arrays.asList(new c(),new d());
系统提示说要把前面的List<a> 改成List<b> 想问下为什么呢?
我绝的b  c  d   e  都是a 的子类啊。只不过c  d 是a的间接子类 这样的话就不可以了?

 

 


看书找到可以有两个解决办法  :
1.是将List<a>  改成 List<b> 这样就可以满足放入c  d的条件。但是 a    e 无法放入了。
2.是写成这样  List<a>  list  =Arrays.<a>asList(new c(),new d());


以上是两种解决办法。  看了后 绝的 第二种还是不错的。 因为第一种有点局限性
这样一来,我就只能在List中放入b或者是b的子类了。 但是对于 e类和a类来说就放不成。

 

所以用这种 “显示类型参数说明”   可以解决这样的问题。 


以下我做了点总结。 如果有不合适的地方 希望大家指出。。

在对于直接继承类和基类来说 可以直接用
List<基类>  list =  Arrays.asList(new 基类(),new 子类());
是完全可以的。

 


对于间接子类,子类。基类来说。更通用的可以写成这样
List <基类>  list = Arrays.<基类>asList(new 基类(),new 子类(),new 间接子类());

 


所以在对于继承体系比较复杂的来说 第二种更加的通用
希望大家都学学啦。。

 

 

 

以上就是一些看书的 。。。 希望对大家有点帮助。。。。 嘿嘿

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值