This question already has answers here:
How to return multiple objects from a Java method?

(25个答案)


4年前关闭。




我需要一个非静态实例方法来返回多个值。举一个简单的例子,我们说它们是boolean successObject obj-但在一般情况下,可能会更多,并且它们可能彼此不相关。可以想到几种不同的方法:

解决方案1 ​​
private boolean aMethod(int aParam, Object obj) { ...set obj parameter & return value... }

解决方案2
private Pair<Boolean, Object> aMethod(int aParam) { ...set return pair values... }

解决方案3
private Object obj;
...
private boolean aMethod(int aParam) { ...set obj field & return value... }

解决方案4
private class MethodReturn { // Nested class - could be a separate class instead
    boolean success;
    Object obj;
    // ... Getters and setters omitted for brevity
}

private MethodReturn aMethod(int aParam) { ...set return object values... }

还有其他我可能错过的可能性吗?谁能评论每个方案的利弊(理想情况下,在大多数情况下最好使用)?

最佳答案

通常,根据具体情况,我会选择第4个或一个Map,但是如果您需要返回多个不相关的值,我认为您有一个严重的设计问题(请检查https://en.wikipedia.org/wiki/Single_responsibility_principle)

在特定情况下(在您发表评论后),我肯定会使用第4个模型来对带有所有必填字段的Response建模。可能还可以使用ResponseSuccessful和ResponseFailure进行子类型化。

08-03 13:04