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

使用类型参数:

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 回答
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 回答