如何正确实现java.util.Collection类?

时间:2018-03-03 12:53:08

标签: java eclipse collections

我想写自己的Linked-list< T>并实现java.util.Collection< T&GT ;.

我的问题是警告:&#34;类型参数T隐藏了类型T&#34; 。当我覆盖方法public <T> T[] toArray(T[] arg0){}

时发生

这是我的代码:

public class MyLinkedList<T>  implements Serializable,Iterable<T>, Collection<T>
{
    //some constructor here.  

    public <T> T[] toArray(T[] arg0)  // I get that error here under the <T> declaration
    {
        return null;
    }
    ...
    // all other methods 
    ...
}

(我知道我可以扩展AbstractCollection类,但这不是我想要做的)。

任何人都知道如何解决这个问题? 我应该更改 Collection&lt;中的参数T吗? T&gt; 是这样的其他字母:Collection< E>

1 个答案:

答案 0 :(得分:2)

您收到此错误是因为方法<T> T[] toArray(T[] arg0)采用了自己的通用参数,该参数独立于您类的通用参数T

如果您需要在T实现中提供T(类的)和toArray(方法),则需要重命名其中一种类型。例如,Java引用实现使用E(对于“element”)作为集合类的泛型类型参数:

public class MyLinkedList<E>  implements Serializable, Iterable<E>, Collection<E>
{
    //some constructor here.  

    public <T> T[] toArray(T[] arg0)
    {
        return null;
    }
    ...
    // all other methods 
    ...
}

现在两个通用参数的名称不同,这解决了问题。