[英]What is the concrete class that has implemented the hasMoreElements() that belongs to the Enumeration Interface?
import java.io.*;
import java.util.Enumeration;
import java.util.Vector;
class FileEnumerator implements Enumeration<InputStream> {
private Enumeration<String> files;
public FileEnumerator(Vector<String> files) {
this.files = files.elements();
}
@Override
public boolean hasMoreElements() {
return this.files.hasMoreElements(); // ------- >>>> This Method ??
}
@Override
public InputStream nextElement() {
try {
return new FileInputStream(this.files.nextElement().toString());
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return null;
}
}
public class App {
public static void main(String args[]) throws IOException {
Vector<String> files = new Vector<>();
files.add("file1.txt");
files.add("file2.txt");
files.add("file3.txt");
SequenceInputStream sequenceInputStream = new SequenceInputStream(
new FileEnumerator(files));
int c;
while ((c = sequenceInputStream.read()) != -1) {
System.out.print((char)c);
}
sequenceInputStream.close();
}
}
我完全糊塗了..我不知道Enumeration接口中的hasMoreElement()方法在哪里實現返回true或false ..因為在這個程序中沒有包含它的唯一具體類是StringTTokenizer http:// docs .oracle.com / JavaSE的/ 8 /文檔/ API / JAVA / UTIL / Enumeration.html
另外在Vector類中沒有這樣的方法。
我只是不明白......
這是Vector
類中重寫的方法。
public boolean hasMoreElements() {
return count < elementCount;
}
你調用files.elements();
我在上面提到的方法是在這個file.elements()
方法中。
希望這可以幫助
我相信你在質疑這個,
@Override
public boolean hasMoreElements() {
return this.files.hasMoreElements(); // ------- >>>> This Method ??
}
看起來像Vector#elements()
Enumeration
上的Decorator模式的一個例子(這是你正在尋找的具體實現)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.