是否有一种方法可以根据Java中的条件从一个函数返回多个类型?
/*here Object1 and Object2 are different objects created for
different classes*/
public return_type function()
{
if(condition1)
return Object1;
else
return Object2;
}
答案 0 :(得分:0)
您可以使用工厂模式。
https://www.tutorialspoint.com/design_pattern/factory_pattern.htm
您只能返回Object,因为在Java中它是其他类的基类。或者,您可以拥有一个GeneralInterface
,并且两个类都实现它。或者它可以是基类。
class ObjectFactory {
public GeneralInterface getObject() {
//return object depending on your condition.
if(condition1)
return Object1;
else
return Object2;
}
}
答案 1 :(得分:0)
您应该使用对象类型,或者如果对象1和对象2扩展相同的类或实现相同的接口,则可以返回公共父对象。在代码调用方法的第一种情况下,可以使用instanceof运算符确定返回的对象类型。
答案 2 :(得分:0)
两个Object都可以从第三类扩展或实现一个接口
interface DataInterface(){
someMethodIfNeeded();
}
然后
class Object1 implements DataInterface{...}
但是请记住,存在存在两个对象而不是一个对象的原因
答案 3 :(得分:0)
您可以创建方法返回类型Object
。并检查其返回类型并在运行时进行投射。
public Object getValue(int i) {
if (i == 1) return new Integer(1);
else return new String("");
}
Object o = getValue(1);
if (o.getClass().isAssignableFrom(Integer.class)) {
int result = (int) o;
} else if (o.getClass().isAssignableFrom(String.class)) {
String result = (String) o;
}