非常简单的问题,我实现了一个数组枚举类,但是不记得如何在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方法返回的对象应该是创建类时定义的类型。我只是不记得怎么做了。太烦人了!!!
非常感谢提前。
答案 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
,那你为什么要这样做呢?