18

如果我的自定义类中有 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)


}
4

4 回答 4

23

你可以让第二个构造函数调用第一个:

public MyClass(int number1, int number2, int number3) {
    this(number1, number2);
于 2013-08-12T16:20:28.127 回答
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)


}
于 2013-08-12T16:20:21.360 回答
7

如果参数太多而无法管理,您还可以使用构建器模式:

MyClass obj = Myclass.set1(number1).setN2(number2).setN3(number3).build();

build()可以调用繁琐的构造函数。

于 2013-08-12T16:23:38.623 回答
0

只需在第二个构造函数方法中使用第一个构造函数方法,然后......只需在第二个构造函数方法中添加所需的新行。

public ClassName(arg1, arg2){
   //etc
}


public ClassName(arg1,arg2,arg3){
 this(arg1,arg2);
 //new line of code to deal with arg3;
}

就是这样:) 节省了大量时间。

于 2013-08-12T16:25:58.723 回答