【发布时间】:2016-11-23 16:44:21
【问题描述】:
我需要一个非静态实例方法来返回多个值。为了一个简单的例子,假设它们是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... }
还有其他我可能错过的可能性吗?任何人都可以评论每种方法的优缺点(理想情况下,在大多数情况下哪个可能是最好的)?
【问题讨论】:
-
好问题。在大多数情况下,我个人使用解决方案 2。
-
这应该在 CodeReview 中移动
-
解决方案 2 和 4 是最不令人惊讶的,因为至少它们没有副作用,并且更清楚地说明了该方法的作用。如果您决定要返回其他内容,解决方案四将更容易重构。我首先会质疑这种方法的必要性,因为它似乎有不止一个责任,并建议重构以避免这种情况,
-
我习惯于引用 dot net 但在 Java 中有吗? stackoverflow.com/questions/2806545/…
-
@MarioAlexandroSantini 除非 OP 发布了他们真正的实际工作代码,而不是用 cmets 替换代码的方法框架,否则这将与代码审查无关。在将帖子引用到该站点之前,请参阅 A guide to Code Review for Stack Overflow users。
标签: java class object methods return