参见英文答案 >
How to return multiple objects from a Java method?23
我需要一个非静态实例方法来返回多个值.为了一个简单的例子,我们假设这些是boolean success和Object obj,但在一般情况下可能会有更多的,它们可能是不相关的.可以想到几种不同的做法:
我需要一个非静态实例方法来返回多个值.为了一个简单的例子,我们假设这些是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层或地图,但如果需要返回多个不相关的值,我认为你有一个严重的设计问题(Check
https://en.wikipedia.org/wiki/Single_responsibility_principle)
在具体的情况下(在您的评论之后),我绝对会用第4个建模响应与所有必需的字段.可能您也可以使用ResponseSuccessful和ResponseFailure进行子类型化.