如果我的自定义类中有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)
}
答案 0 :(得分:18)
您可以调用其他构造函数并将所有逻辑放在那里。
public myConstructor(int number, int number2){
this(number, number2, 0);
}
public myConstructor(int number1, int number2, int number3){
int result = (number + number2);
int result2 = (number2 - number1)
//Etc
//Etc
//Etc
//Etc
int result3 = (result + result2 + number3)
}
答案 1 :(得分:17)
你可以让第二个构造函数调用第一个:
public MyClass(int number1, int number2, int number3) {
this(number1, number2);
答案 2 :(得分:7)
如果参数太多而无法管理,您还可以使用构建器模式:
MyClass obj = Myclass.set1(number1).setN2(number2).setN3(number3).build();
build()
可以调用繁琐的构造函数。
答案 3 :(得分:0)
只需在第二个构造函数方法中使用第一个构造函数方法,然后......只需在第二个构造函数方法中添加所需的新行。
public ClassName(arg1, arg2){
//etc
}
public ClassName(arg1,arg2,arg3){
this(arg1,arg2);
//new line of code to deal with arg3;
}
就是这样:)节省了很多时间。