晚上好,请考虑以下事项:
public class TestEnum implements Enumeration<String> {
private Enumeration<String> files;
private TestEnum(Vector<String> files) {
this.files = files.elements();
}
public Enumeration<String> getFiles() {
return files;
}
@Override
public boolean hasMoreElements() {
return files.hasMoreElements();
}
@Override
public String nextElement() {
return files.nextElement();
}
public static void main(String[] args) {
Vector<String> vector = new Vector<>();
vector.add("1");
vector.add("2");
vector.add("3");
vector.add("4");
vector.add("5");
TestEnum obj = new TestEnum(vector);
while(obj.getFiles().hasMoreElements()) {
System.out.println(obj.getFiles().nextElement());
}
}
}
我不明白,当操作whit枚举字符串时,nextElement()和hasMoreElements()方法的默认实现在哪里? 我知道方法实现应该在程序员自己创建并且已经创建,但是在行中:
return files.nextElement();
我在具有另一个实现的“files”对象上调用nextElement()方法吗?如果方法有我的实现,那么应该无限期地调用nextElement()?或者我错了?
答案 0 :(得分:0)
对不起,伙计们,我找到了它:
public Enumeration<E> elements() {
return new Enumeration<E>() {
int count = 0;
public boolean hasMoreElements() {
return count < elementCount;
}
public E nextElement() {
synchronized (Vector.this) {
if (count < elementCount) {
return elementData(count++);
}
}
throw new NoSuchElementException("Vector Enumeration");
}
};
}
在Vector类
中