java多个构造函数[重复]

Posted

技术标签:

【中文标题】java多个构造函数[重复]【英文标题】:java multiple constructors [duplicate] 【发布时间】: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 时出现重复代码,或者这种重复代码是否被认为可以接受/可取?

【问题讨论】:

【参考方案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());
  

【讨论】:

以上是关于java多个构造函数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

创建单个对象时如何执行多个构造函数[重复]

“构造函数调用必须是构造函数中的第一个语句”Java中的问题[重复]

当有多个实现接口的类时,如何指定构造函数注入[重复]

带参数的Java私有构造函数[重复]

在Java中的包级别打印构造函数[重复]

Java在另一个[重复]中调用构造函数