当你的方法需要一个新参数时,但只在某些情况下...?

时间:2011-05-03 21:52:56

标签: java overloading

我有一个方法

myMethod(int a, String b)

一直很好。但是,现在我需要它在参数 a 具有特定值时执行一些额外的工作。在这种情况下,需要将附加参数传递给参数。

我应该只将方法签名更改为

myMethod(int a, String b, int newParameter)

并在不需要此参数的所有情况下传入空值?

也许留下旧方法签名,并且使用null参数调用新方法将是最方便的,因此我不必更改代码中的任何其他内容,例如

myMethod(int a, String b) { return myMethod(a, b, null); }

或者我需要以不同的方式看待它吗?

所有评论都很有意义!


更新

myMethod(int a, String b)

做了很多事情,包括调用

anotherMethod()

包含 newParameter 时需要发生的唯一区别是anotherMethod被调用如此

anotherMethod(newParameter)

7 个答案:

答案 0 :(得分:1)

只需重载可以使用其他参数的方法myMethod,并在需要时调用特定的方法。只需调用您需要的方法即可。我认为没有必要从方法到另一个重载方法进行间接调用。

myMethod(int a, String b) { return myMethod(a, b, null); }

您可以在这里调用重载方法。现在只需更改代码就可以调用必要的方法,否则当程序变大时,程序就变得一团糟。

答案 1 :(得分:0)

如果调用方法知道何时需要额外参数,那么是的,我倾向于第二种方法。你总是在构造函数中看到这个。或者,如果myMethod可以分解为它的成分,你可以根据'a'的值调用appropriaet组成部分。

答案 2 :(得分:0)

恕我直言,我认为你走在正确的轨道上。我通常会保留旧方法签名并使用其他参数调用方法。如果你看一下公共代码,你会发现使用了相同的技术。

答案 3 :(得分:0)

如果你的功能需要做两件事,那么你应该把它分成两个独立的功能,是的。我认为这比使用一个带有“行为标志”类型参数的函数要清楚得多。

答案 4 :(得分:0)

你为什么不这样做?

myMethod(int a, String b) {

AnotherMethod();

}

myMethod(int a, String b, int newParameter) {

AnotherMethod(newParameter);

}

替代:

myMethod(int a, String b, int newParameter) {

if (newParameter != -1) 
{
AnotherMethod(newParameter);
} else {
AnotherMethod();
}

并且-1为您永远不会使用的值,表示“null”

答案 5 :(得分:0)

就个人而言,我认为保留旧方法签名,并使用null参数调用新方法将是更好的选择。我只会编写能够正确处理“null”情况的智能代码。

代码中的冗余越少,维护就越容易。想想那样。

答案 6 :(得分:0)

重载最好这样做:

/* Some value that is most common to use in your program. */
private final int DEFAULT_PARAM_VALUE = 0;

public void myMethod (int a, String b) {
    myMethod (a, b, DEFAULT_PARAM_VALUE);

public void myMethod (int a, String b, int newParameter) {
    /* do all your main stuff here */

    anotherMethod (newParameter);
}

public void anotherMethod (int param) {
    /* do other stuff */
}