如何在Java中为返回类型建模“是或”类?

时间:2014-01-18 13:48:20

标签: java class object return

当前有一个方法返回一个属于两个类之一的对象。 我想将它重构为更直观的东西,如果我添加第三类等,可以轻松扩展。

实施此更好的方法是什么?

public Object getResult() {
  if (foo != null) {
    //foo is of class Foo
    return foo;
  } else {
    //bar is of class Bar
    return bar;
  }
}

1 个答案:

答案 0 :(得分:2)

我认为最好的办法是返回两个对象的公共接口或超类。

如果不存在这样的接口或类,您可以创建一个定义Foo和Bar将满足的合同以及getResult的调用者依赖的合同。

如果这两个类是完全不相交的,我建议不要使用这样的getResult,因为在这种情况下它不是很有意义。