在对象创建上定义类型,如HashMap <type here =“”> </type>

时间:2013-01-14 17:54:53

标签: java object types

非常简单的问题,我实现了一个数组枚举类,但是不记得如何在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方法返回的对象应该是创建类时定义的类型。我只是不记得怎么做了。太烦人了!!!

非常感谢提前。

2 个答案:

答案 0 :(得分: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];
    } 
}

答案 1 :(得分:1)

使用类型参数:

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

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

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

此外,您应该考虑使用Iterator。但无论如何,数组实现Iterable,那你为什么要这样做呢?