如何以相同的方法返回不同的对象?

时间:2019-03-30 18:59:09

标签: java

Need to return differnent objects in same method?is it Possible to return?

   public class Smoketest(){     
    protected Object getLabTopology() {
        if(labTopology == null) {
            return labTopologyAbstarct;
        } else {
            return labTopology; 
        }
    }
}

public test extends Smoketest()
{

getLabTopology();
 }

//需要直接进行操作而无需强制转换。可以吗?

1 个答案:

答案 0 :(得分:2)

如果要从方法返回某些内容,则方法签名将包括返回的对象的类型。这可以是任何有效的Java类型。

所有对象的公共超类是类Object。这就是为什么您可以从以Object声明为返回类型的方法中返回任何内容的原因。一般来说,如果消费者看到Object从方法中返回,他们将无能为力。

考虑以下示例:

public Fruit getFruit() {
    return fruit;
}

在这里,您可以退还任何水果。它可以是Fruit,也可以是扩展它的任何对象,例如AppleBanana。消费者会更喜欢这种退货类型,因为它是特定的。

现在,您知道您从此方法中获得了Fruit。您不知道的是:水果的确切类型是什么。但是您知道的是,您可以用所有水果都可以做的事来做任何事,例如吃它:

public class Fruit {

    public void eat() {
        System.out.println("Mhh, tasty!")
    }
}

如果要返回非同一类的对象,请尝试引入提取共享数据或操作的公共超类或接口。如果找不到任何内容,请编写两个单独的方法,每个方法均返回其独立的对象。

此外,您可以编写包装器类来封装返回的对象。这样,该类可以容纳多个对象。

public Result getResult() {
    return new Result(a, b);
}

public class Result {
    private A a;
    private B b;

    // remainder ommitted
}