抱歉,标题不清楚。 我有以下情况:
我有4种类型: Type1,Type2,Type3,Type4 。 (具有相同的结构:姓名和孩子)
我还有其他4种类型的孩子: Child1,Child2,Child3,Child4。(依次具有相同的结构: parent 和 value )。
条件:Type1只能具有类型为Child1的子代; Type2-> child2,依此类推。
如果我在这种情况下使用继承,则所有类型均从SuperType继承,所有子代均从Children继承。
public class Children {
}
public class SuperType {
private List<Children> children;
}
public class Type1 extends SuperType {
}
public class Child1 extends Children {
}
Type1可以具有Child2,Child3,Child4的孩子。那不是我想要的。
您对我可以用于这种情况的图案设计有任何想法吗?
答案 0 :(得分:4)
您可以通过使SuperType
通用并为Children
使用类型参数来解决此问题:
public class SuperType<T extends Children> {
private List<T> children;
}
然后子类将指定其自己的类型Children
:
public class Type1 extends SupperType<Child1>{}
public class Type2 extends SupperType<Child2>{}
然后您要做的就是让SuperType
的API使用type参数。