【发布时间】:2011-06-26 21:30:48
【问题描述】:
我正在编写一个 java 中的跳过列表类作为练习。我编写了一个名为SkipListInternal<E> 的类,其中包含实际的跳过列表。我还创建了一个名为SkipListSet<E> 的包装类,它实现了SortedSet<E> 接口并包含SkipListInternal<E> 的一个实例。
除此之外,SkipListInternal<E> 包含一个方法 E find(E e),如果存在则返回等于 e 的元素,否则返回 null。
在编写 boolean contains(Object o)(通过 SortedSet<E> 继承自 Collection<E>)方法时,我注意到它的参数是 Object 而不是 E。我打算做这样的事情,但由于类型擦除而无法实现:
public class SkipListSet<E> implements SortedSet<E>{
private SkipListInternal<E> skiplist;
...
public boolean contains(Object o){
if (!(o instanceof E)) return false;
return skiplist.find((E) o) != null;
}
...
}
既然不能这样,那我该怎么做呢?
【问题讨论】:
标签: java generics collections