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