簡體   English   中英

實現了屬於枚舉接口的hasMoreElements()的具體類是什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM