我有一个java分配,我应该构建一个类似Multiset的类。该类必须实现接口集合。我试图这样做,并声明集合中的所有方法(找到here)。但是当我编译这段代码时,我收到以下错误:
error: TreeMultisetNy is not abstract and does not override abstract method retainAll(Collection<?>) in Collection
为什么会这样?
继承我的代码:
import java.util.*;
public class TreeMultisetNy<E extends Comparable<E>> implements Collection<E> {
private Map<E, Integer> data = new TreeMap<E, Integer > ();
public boolean add(E ny) {
return true;
}
public boolean addAll(Collection<? extends E> c){
return false;
}
public void clear() {
}
public boolean contains(E what) {
return false;
}
public boolean containsAll(Collection<?> c) {
return false;
}
public boolean equals(E what) {
return false;
}
public int hashCode() {
return 0;
}
public boolean isEmpty() {
return false;
}
public Iterator<E> iterator() {
return null;
}
public boolean remove(E what) {
return false;
}
public boolean removeAll(Collection<?> c) {
return false;
}
public boolean retainAll(Collection<?> c) {
return false;
}
public int size() {
return 0;
}
public Object[] toArray() {
return null;
}
public Object[] toArray(Object[] a){
return null;
}
}
我发现了这个问题: How to create a class that implements java.util.collections 但我不相信我和那个人犯了同样的错误,或者我错了?
请给我一些提示,我已经编写php多年,但面向对象对我来说是新的!
答案 0 :(得分:1)
“All
”方法的正确签名如下:
boolean addAll(Collection<? extends E> c)
boolean containsAll(Collection<?> c)
boolean removeAll(Collection<?> c)
boolean retainAll(Collection<?> c)
您需要相应地更改课程。
此外,单{arg}版toArray()
的签名是错误的。它应该是
public <T> T[] toArray(T[] a)
同一行还有其他错误。你需要仔细检查你的课程,确保每个方法都有正确的签名。
有关详细信息,请参阅Javadoc。