2013-01-14 32 views
1

非常簡單的問題,我實現一個數組枚舉類,但不記得如何獲得正確的類型回到nextElement()方法。代碼如下...定義像HashMap的對象創建類型<type here>

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方法返回的對象應該是類創建時定義的類型。我只是不記得如何去做。很煩人!!!

許多在此先感謝。

+1

是否有你使用'Enumeration'併爲你自己做這件事的原因,而不是使用現代集合API? –

+0

你指的是哪一個現代api?不知道這個任務是否存在。順便說一句,我正在轉換我的應用程序參數來使用這個參數。 -appname 。 – th3barri3

+2

沒有人再使用'Enumeration';你正在做的典型實現是單行'Arrays.asList(array).iterator()'。 –

回答

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]; 
    } 
} 
+0

也謝謝,應該看看源代碼。 – th3barri3

1

使用類型參數:

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

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

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

此外,你應該考慮使用Iterator代替。但無論如何,數組實現了Iterable,那麼爲什麼你要這樣做呢?

+0

謝謝,完美工作。 – th3barri3

相關問題