根据条件返回不同类型的数据

时间:2017-08-20 00:38:54

标签: java rest

我遇到一个问题,如果在一个方法中,由一个休息终点调用,我有一个错误日志,那么该方法应该返回一个文件。否则,如果一切正确,它应该返回一个json。

有没有办法根据条件改变方法的返回类型?

1 个答案:

答案 0 :(得分:1)

我首先要说的是,这可能是解决问题的错误方法。正确的方法是在出现错误时抛出异常,并使用异常处理程序处理它。或者,在从方法返回之前,使用回调来处理错误情况。 (这将处理你的“生成错误日志”用例。)

说完了....

这是一个“复杂”对象,可用于返回以下两种类型之一:

public class AorB {
    private final A a;
    private final B b;
    private final boolean isA;

    public AorB(A a) {
        this.a = a;
        this.b = null;
        isA = true;
    }

    public AorB(B b) {
        this.a = null;
        this.b = b;
        isA = false;
    }

    public boolean isA() {
        return isA;
    }

    public A getA() {
        if (isA) {
            return a;
        } else {
            throw IllegalStateException("Not an A!")
        }
    }

    public B getB() {
        if (!isA) {
            return b;
        } else {
            throw IllegalStateException("Not a B!")
        }
    }
}

或者,您可以将返回类型声明为Object,并在调用方法中使用类型转换和instanceof来区分返回的值。