实现java.util.Collection <e>和重写方法</e>的问题

时间:2013-04-07 16:48:41

标签: java collections

我有一个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多年,但面向对象对我来说是新的!

1 个答案:

答案 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