私は新しいリストが設定されるたびにリストにその内部イテレータをリセットする必要があるクラスを持っている:私のコンストラクタから追加のロジックを含むセッターを使うべきでしょうか?
public class ListElementReceiver implements ElementReceiver {
private List<Element> elements;
private Iterator<Element> elementIter;
public void reset() {
elementIter = elements.iterator();
}
public void setElements(List<Element> elements) {
this.elements = elements;
reset();
}
}
私は自分の与えられたインタフェースでそれを使用することができますので、それは基本的には、リストのラッパーとその反復子ElementReceiver
。私が持っている問題は、このクラスのコンストラクタを構築することです。どちらのアプローチが好ましいですか?
// Approach 1: Duplicate logic, independant of Setter
public ListElementReceiver() {
elements = new List<Element>();
reset();
}
public ListElementReceiver(List<Element> elements) {
this.elements = elements;
reset();
}
//Approach 2: Make dependant on Setter
public ListElementReceiver() {
setElements(new List<Element>());
}
public ListElementReceiver(List<Element> elements) {
setElements(elements);
}
あなたが徹底的に検索しましたか?私は、少なくとも1つの質問がこの地面をカバーする別のものの複製としてクローズされているのを見たことは確かです。 –
私はすばやい検索をしましたが、私は彼らが私の質問に答えなかったように感じました。私が見つけたのは、 "私は自分のコンストラクタからセッターを呼び出すべきですか?"というものでしたが、簡単な設定以外のロジックは含まれていませんでした。 –
私は(ほんの数分の検索の中で)きれいな複製を見つけることができません。確かに非常に近いです:http://stackoverflow.com/questions/12533247/java-setters-from-constructors、http://stackoverflow.com/questions/6104262/java-overridable-call-in-constructor –