gpt4 book ai didi

java - 构造函数重载 - Java 最佳实践

转载 作者:太空狗 更新时间:2023-10-29 22:38:58 27 4
gpt4 key购买 nike

<分区>

构造函数也可以像任何其他方法一样被重载,我知道这一点。由于一项任务,我决定使用具有多个构造函数的抽象父类(super class):

抽象父类(super class):

protected ListSortierer()
{
this( null, null );
}

protected ListSortierer( List<E> li )
{
this( li, null );
}

protected ListSortierer( Comparator<E> comp )
{
this( null, comp );
}

protected ListSortierer( List<E> li, Comparator<E> com )
{
this.original = Optional.ofNullable( li );
this.comp = Optional.ofNullable( com );
}

为了访问这些构造函数中的每一个,我还需要子类中的多个构造函数。

BubbleSort.java:

public ListBubbleSort()
{
super();
}

public ListBubbleSort( List<E> li )
{
super( li );
}

public ListBubbleSort( Comparator<E> com )
{
super( com );
}

public ListBubbleSort( List<E> li, Comparator<E> com )
{
super( li, com );
}

在这种情况下,子类的每个构造函数都会立即调用父类(super class)的构造函数。我想到我可以再次引用自己的构造函数并传递 null 值:

public ListBubbleSort()
{
this( null, null );
}

public ListBubbleSort( List<E> li )
{
this( li, null );
}

public ListBubbleSort( Comparator<E> com )
{
this( null, com );
}

public ListBubbleSort( List<E> li, Comparator<E> com )
{
super( li, com );
}

这样做可以让我省略抽象父类(super class)中的 3 个重载构造函数,但会强制每个子类都遵循相同的模式。

我的问题是:在一致性的情况下,更好的方法是什么?处理抽象父类(super class)或子类中的缺失值?它对实例化有影响还是只是一个意见问题?

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com