Java 当您的方法需要一个新参数,但仅在某些情况下。。。?

Java 当您的方法需要一个新参数,但仅在某些情况下。。。?,java,overloading,Java,Overloading,我有办法 myMethod(int a, String b) 这一直运作良好。但是,现在我需要它在参数a具有特定值时执行一些额外的工作。在这种情况下,需要向参数传递一个附加参数 我是否应该将方法签名更改为 myMethod(int a, String b, int newParameter) 并在所有不需要此参数的情况下传递空值 也许离开旧的方法签名,让它用一个空参数调用新方法将是最方便的,因此我不必在代码的其他地方更改任何内容,例如 myMethod(int a, String b) {

我有办法

myMethod(int a, String b)
这一直运作良好。但是,现在我需要它在参数a具有特定值时执行一些额外的工作。在这种情况下,需要向参数传递一个附加参数

我是否应该将方法签名更改为

myMethod(int a, String b, int newParameter)
并在所有不需要此参数的情况下传递空值

也许离开旧的方法签名,让它用一个空参数调用新方法将是最方便的,因此我不必在代码的其他地方更改任何内容,例如

myMethod(int a, String b) { return myMethod(a, b, null); }
还是我需要用不同的眼光看待这个问题

所有的评论都非常感谢


更新

myMethod(int a, String b)
做很多事情,包括打电话

anotherMethod()
当包含newParameter时,唯一需要发生的区别是anotherMethod被这样调用

anotherMethod(newParameter)

只需重载方法
myMethod
,该方法可以接受附加参数,并在需要时调用该方法specific。只要根据需要调用该方法即可。我看不出有任何必要从这个方法间接调用另一个重载的方法

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

这里介绍如何调用重载方法。现在只需更改代码,自己调用必要的方法,否则当程序变得更大时就会变得一团糟。

如果调用方法知道何时需要额外的参数,那么是的,我倾向于第二种方法。您在构造函数中经常看到这一点。或者,如果可以将myMethod分解为它的组成部分,您可以根据“a”的值调用适当的组成部分。

IMHO我认为您在正确的轨道上。我通常保留旧的方法签名,并使用附加参数调用该方法。如果你看一下commons代码,你会发现同样的技术被大量使用。

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

为什么不这样做呢

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”

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


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

重载最好这样做:

/* 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 */
}