class Product<T>{
String name;
T category;
}
与下面的设计相比,哪一个更好,以及如何选择在不同的情况下?我觉得它们在功能上是相同的或非常相似的。泛型或继承/ Java中的接口?
class Product{
String name;
Category category;
}
interface Category {
String type();
}
class C1 implements Category{
...
@Override
String type(){
...
}
}
class C2 implements Category{
...
@Override
String type(){
...
}
}
他们做不同的事情。通用版本指定了一个组件类型,对类型没有限制。继承版本指定了特定的类型。没有限制与特定类型是非常不同的。如果您不需要限制组件类型,请勿使用限制。在需要特定类型时使用特定类型。 –
*“泛型或继承/ Java中的接口?”* ...是的。 – scottb
您应该为第一个示例添加一个限制:'class Product'。使用该设计方法可以定义Compile-Time限制(“我只想要类别X的产品”):public void anyMethod(Product <?extends C2> product)'这可以很好地与 –