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();
}
//需要直接进行操作而无需强制转换。可以吗?
答案 0 :(得分:2)
如果要从方法返回某些内容,则方法签名将包括返回的对象的类型。这可以是任何有效的Java类型。
所有对象的公共超类是类Object
。这就是为什么您可以从以Object
声明为返回类型的方法中返回任何内容的原因。一般来说,如果消费者看到Object
从方法中返回,他们将无能为力。
考虑以下示例:
public Fruit getFruit() {
return fruit;
}
在这里,您可以退还任何水果。它可以是Fruit
,也可以是扩展它的任何对象,例如Apple
或Banana
。消费者会更喜欢这种退货类型,因为它是特定的。
现在,您知道您从此方法中获得了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
}