我从ReSharper收到一条关于从我的对象构造函数调用虚拟成员的警告.
为什么不做这件事?
每当设置一个新列表时,我有一个类需要在列表上重置其内部迭代器:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
它基本上只是一个列表及其迭代器的包装器,所以我可以将它与我给定的接口一起使用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);
}
Run Code Online (Sandbox Code Playgroud)