This question already has answers here:
How to return multiple objects from a Java method?
(25个答案)
4年前关闭。
我需要一个非静态实例方法来返回多个值。举一个简单的例子,我们说它们是
解决方案1
解决方案2
解决方案3
解决方案4
还有其他我可能错过的可能性吗?谁能评论每个方案的利弊(理想情况下,在大多数情况下最好使用)?
(25个答案)
4年前关闭。
我需要一个非静态实例方法来返回多个值。举一个简单的例子,我们说它们是
boolean success
和Object 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