一般性地引用Java中不同族中的对象

时间:2013-01-17 23:56:48

标签: java generics

我有一个属于家庭FooBabyFooMamaFooPapaFoo)的课程以及属于该家庭Bar的课程({{ 1}},BabyBarMamaBar)。在每个家庭中,很容易引用家庭成员。例如,当PapaBar引用自己的孩子时,她明确提到MamaFoo。但有些情况下,类BabyFoo在一个系列的成员(LouBabyMama)上运行代码而不知道哪个系列正在处理该请求。

Papa如何将Java一般性地引用给任何一个家庭成员?

到目前为止我的(差)解决方案是使用委托。 Lou没有对这两个家庭的成员运行代码。相反,两个网关类LouFamilyFoo处理来自FamilyBar的所有传入请求。

LouFamilyFoo反过来明确提及其家庭中的课程。这个解决方案结果很差,因为它导致相当多的代码重复,即使多态性(FamilyBar委托给LouFamily referenceFamilyFoo的父代表示意味着一些代码经济实现了。

你能做得更好吗?

1 个答案:

答案 0 :(得分:0)

你应该使用Bar和Foo可以实现的接口,如果它对所有子类型都是相同的操作。

相反,如果它有意义,你可以创建一个Bar和Foo都可以扩展的超类。根据你的解释,我无法确定哪个更好。我需要更多信息。

编辑:您可以使用Baby<T>Mama<T>Papa<T>这样的通用家庭成员,T代表该家庭。