【发布时间】:2013-08-14 01:18:33
【问题描述】:
如果我的自定义类中有 2 个构造函数,其中一个接受一个额外的参数并完成第一个所做的所有事情,但只增加一行代码(并且这一额外的行使用了额外的参数),如何最好地处理无需复制第一个构造函数中的所有代码?
示例代码
public myConstuctor(int number, int number2){
int result = (number + number2);
int result2 = (number2 - number1)
//Etc
//Etc
//Etc
//Etc
}
public myConstructor(int number1, int number2, int number 3){
int result = (number + number2);
int result2 = (number2 - number1)
//Etc
//Etc
//Etc
//Etc
int result3 = (result + result2 + number3)
}
【问题讨论】:
-
不,这不是同一个问题,我不是专门问如何从另一个构造函数调用一个构造函数,我是问如何处理减少重复代码的问题,不管最流行的答案可能就是这样做(从另一个调用一个构造函数)
-
“我在问如何处理减少重复代码的问题,”你选择的是正确而不是正确的答案..最好将逻辑放在具有更多参数的构造函数中
-
@nachokk,如果我创建一个只需要 1 个参数的对象,那么它不需要 2 参数构造函数中的代码,所以我的大部分逻辑(所有常见逻辑)都在least 参数的构造函数,当我需要创建一个传递 2 个参数的对象时,仍然需要运行原始 1 参数构造函数中的所有逻辑,因为它对这种类型的所有对象都是通用的,但也需要2参数构造函数中的附加代码,我参考1参数构造函数并运行公共代码,然后在另一个中运行额外代码。看起来很合乎逻辑?
-
我想说的是,如果您按照@bas 建议的方式进行操作,您只需将逻辑放入一个构造函数中,另一方面您必须将逻辑放入两个构造函数中!
-
@nachokk,不,我只有一个构造函数(单参数构造函数)中的大部分代码 - 我在另一个构造函数(2 参数构造函数)中的唯一代码是所需的代码需要它的对象,现在没有重复代码! :-)
标签: java constructor duplicates overloading