【问题标题】:java multiple constructors [duplicate]java多个构造函数[重复]
【发布时间】:2015-12-22 15:47:47
【问题描述】:

如果我在一个类中有多个构造函数,如何避免为所有构造函数初始化相同的字段重复代码,或者这不是可取的吗?

例如:

class ComparableThing<K extends Comparable<K>> {
  private int someField;
  private Comparator<K> comparator;

  public ComparableThing() {
    this.someField = 0;
    this.comparator = Comparator.naturalOrder();
  }

  public ComparableThing(Comparator<K> comp) {
    this.someField = 0;
    this.comparator = comp;
  }
}

有没有办法避免在初始化someField 时出现重复代码,或者这种重复代码是否被认为可以接受/可取?

【问题讨论】:

    标签: java constructor code-duplication


    【解决方案1】:

    您可以链接构造函数。从更具体的构造函数调用更通用的构造函数。这并不罕见。

    class ComparableThing<K extends Comparable<K>> {
      private int someField;
      private Comparator<K> comparator;
    
      public ComparableThing(Comparator<K> comp) {  // more general constructor
        this.someField = 0;
        this.comparator = comp;
      }
    
      public ComparableThing() {
        this(Comparator.naturalOrder());
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多