1

我有一个java作业,我应该在其中构造一个像Multiset一样工作的类。该类必须实现接口集合。我试图这样做并声明集合中的所有方法(在此处找到)。但是当我编译这段代码时,我得到以下错误:

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

4

1 回答 1

1

" " 方法的正确签名All如下:

boolean addAll(Collection<? extends E> c)
boolean containsAll(Collection<?> c)
boolean removeAll(Collection<?> c)
boolean retainAll(Collection<?> c)

您需要相应地更改您的课程。

此外,单参数版本的签名toArray()是错误的。它应该是

public <T> T[] toArray(T[] a)

同一行还有其他错误。您需要仔细检查您的课程,确保每个方法都具有完全正确的签名。

有关详细信息,请参阅Javadoc

于 2013-04-07T17:11:31.330 回答