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 间接子类());
所以在对于继承体系比较复杂的来说 第二种更加的通用
希望大家都学学啦。。
以上就是一些看书的 。。。 希望对大家有点帮助。。。。 嘿嘿