如何正确实现java.util.Collection类?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何正确实现java.util.Collection类?相关的知识,希望对你有一定的参考价值。
我想编写自己的Linked-list <T>并实现java.util.Collection <T>。
我的问题是警告:“类型参数T隐藏类型T”。当我重写方法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 <T>中的参数T更改为其他类似的字母:Collection< E>
?
答案
你得到这个错误,因为方法<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
...
}
现在两个通用参数的名称不同,这解决了问题。
以上是关于如何正确实现java.util.Collection类?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 RandomizedSearchCV 正确实现 StratifiedKFold
Flutter:如何正确实现 FlutterError.OnError