如何处理2个几乎相同的构造函数

时间:2013-08-12 16:19:05

标签: java constructor duplicates overloading

如果我的自定义类中有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 个答案:

答案 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;
}

就是这样:)节省了很多时间。