我这个场景用泛型还是继承合适呢
我这个场景用泛型还是继承合适呢
一个实体A,有一个列表,列表元素是很多大同小异的类型B1 B2 B3
class A<T>
{
List<T>
}
还是这样好
class A
{
List<B>
}
B是B1 B2 B3的父类
这两种实现什么区别呢
------解决方案--------------------你可以仔细思考下
像你所说的 如果列表元素很多的话 那岂不是得有很多子类
我个人感觉还是用泛型好
------解决方案--------------------假设你用继承方式
class A {
List<B> list
}
使用的结果是,在你的应用中,总是要 cast 类型到子类 B1,B2,B3。
那你就最好改用 class A<T> 的方法。
也就是说,B1,B2,B3 子类的差距大小,决定你的选择。
子类差距越大,越有特殊性,越应该选择 A<T> 的方法;极端的情况,如果差距大到没有父类(或父类只能是Object),那你只有用 A<T> 的方法。
如果子类差距小,不需特殊对待,可用A,List<B> 的方式。
------解决方案--------------------从OOP来说,使用接口B抽象B1 B2 B3,满足面向接口编程。
从泛型来说,使用List<B>来约束List中内容的类型保证安全性。
所以如果B1 B2 B3能抽象出接口B的话,当然要使用第二种方法。