我想写自己的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>
?
答案 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
...
}
现在两个通用参数的名称不同,这解决了问题。