1

非常に単純な質問です。配列列挙型クラスを実装していますが、nextElement() メソッドで正しい型を取得する方法を思い出せません。コードは次のとおりです...

public class ArrayEnumeration<Object> implements Enumeration<Object> {
    private Object[] data;
    private int n = 0;

    public ArrayEnumeration(Object[] data) {
        this.data = data;
    }

    @Override
    public boolean hasMoreElements() {
        return n < data.length;
    }

    @Override
    public Object nextElement() {
        n++;
        return data[n - 1];
    } 
}

そのため、nextElement メソッドから返されるオブジェクトは、クラスの作成時に定義された型である必要があります。やり方しか思い出せない。とても迷惑!!!

よろしくお願いします。

4

2 に答える 2

1

java.util.List例のソース コードを確認してください。

public interface List<E> extends Collection<E> {

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/List.java

次に、メソッドはジェネリック型を使用します。

public boolean add(E e);

public E get(int index);

すべてのソースからjava.util.List..

だからあなたの場合:

public class ArrayEnumeration<E> implements Enumeration<E> {

    ...

    @Override
    public E nextElement() {
        n++;
        return data[n - 1];
    } 
}
于 2013-01-14T17:56:39.953 に答える
1

型パラメーターを使用します。

public class ArrayEnumeration<T>
    implements Enumeration<T> 
{
    private T[] data;

    public ArrayEnumeration(T[] data)
    {
        this.data = data;
    }

    // ...
    public T nextElement() {}
}

また、Iterator代わりに使用することを検討する必要があります。しかし、いずれにせよ、配列は を実装Iterableしているのに、なぜこれを行うのでしょうか?

于 2013-01-14T17:57:19.133 に答える