我这个场景用泛型还是继承合适呢一个实体A,有一个列表,列表元素是很多大同小异的类型B1 B2 B3
class A<T>
{
List<T>
}还是这样好class A
{
List<B>
}
B是B1 B2 B3的父类这两种实现什么区别呢

解决方案 »

  1.   

    假设你用继承方式
    class A {
      List<B> list
    }使用的结果是,在你的应用中,总是要 cast 类型到子类 B1,B2,B3。
    那你就最好改用 class A<T> 的方法。也就是说,B1,B2,B3 子类的差距大小,决定你的选择。子类差距越大,越有特殊性,越应该选择 A<T> 的方法;极端的情况,如果差距大到没有父类(或父类只能是Object),那你只有用 A<T> 的方法。如果子类差距小,不需特殊对待,可用A,List<B> 的方式。
      

  2.   

    从OOP来说,使用接口B抽象B1 B2 B3,满足面向接口编程。
    从泛型来说,使用List<B>来约束List中内容的类型保证安全性。所以如果B1 B2 B3能抽象出接口B的话,当然要使用第二种方法。