编程语言
首页 > 编程语言> > java – 如何避免重载构造函数中的代码重复?

java – 如何避免重载构造函数中的代码重复?

作者:互联网

假设我有一个接受输入的构造函数和另一个使用默认值的构造函数.然后,两个构造函数都以完全相同的方式继续处理这些数据. (以下示例.)在这种情况下,我有哪些选择可以避免代码重复?

(我已经阅读了帖子how to reduce the code of constructor overloading,其中最佳答案建议使用关键字“this”.在我的情况下,我想我需要使用“this”在输入存储后从第二个调用第一个构造函数但是这会导致编译错误:“调用此函数必须是构造函数中的第一个语句”.)

示例代码:

public class A {
  public A(String a) {
    //process a
  }
  public A() {
    String a = "defaultString";
    //process a
  }
}

编辑:我在类构造函数中使用输入对话框调用需要大量的工作(我知道这不是很好的做法).所以我已经改变了代码示例,以引导讨论远离这个:).

解决方法:

一种方法是使用init方法:

public class A {
  public A(String a) {
    init(a);
  }
  public A() {
    String a = "defaultString";
    init(a);
  }
  private void init(String a) {
    //process a
  }
}

PS:我同意Mike Clark的评论 – 提示用户输入值的行不能移到构造函数之外.

标签:java,overloading,code-duplication
来源: https://codeday.me/bug/20190712/1444403.html