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();
}
}
Я совершенно смущен. Я не знаю, где был применен метод hasMoreElement() в интерфейсе Enumeration для возврата 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 ??
}
Похоже, пример шаблона Decorator для Vector#elements()
Enumeration
(и это конкретная реализация, которую вы ищете).
this.files = files.elements();
element () метод Vector возвращает Enumeration, который имеет метод hasMoreElements.