-1

私はJavaが初めてです。私はEclipse IDEを使用しています。@override が削除された場合ではなく、@override がある場合にエラーが発生します。この点で誰でも私を助けることができますか?ありがとう

タイプ HashDictionary のメソッド remove(K) は、スーパークラスをオーバーライドする必要があります。これは私が得ているエラーです。

public interface DictionaryInterface <K extends Comparable<K>, V>
{
    public void insert(K key, V value);
    public V getValue(K str);
    public void remove(K key);
    public K[] getKeys();   
}


public class HashDictionary <K extends Comparable<K>, V> implements DictionaryInterface <K,V>{ 
    Hashtable<K,V> h;
    Class<K> KeyType;
    HashDictionary(Class<K> KeyType) {
        h=new Hashtable<K, V>();
        this.KeyType=KeyType;
    }
    public K[] getKeys() {
        // TODO Auto-generated method stub
        Set<K> s = h.keySet();
        K elements[]=(K[])Array.newInstance(KeyType, h.size());
        int i=0;
        for(K e:s)
        {
            elements[i]=e;
            i++;
        }
        return elements;
}

    @Override
    public void remove(K key) {
        h.remove(key);
    }
    @Override
    public V getValue(K str) {
        return h.get(str);
    }
    @Override
    public void insert(K key, V value) {
        h.put(key, value);
    }
}
4

4 に答える 4

3

問題は、インターフェイスDictionaryInterfaceにメソッド が含まremove れていないか、署名が異なることです。

アノテーションを削除する @Override と、ローカル メソッドと見なされます。

それを表示DictionaryInterfaceまたはクロスチェックします。

アップデート:

でタイプミスをするかもしれませんIDE。すべてのメソッドを検証した後、

public class HashDictionary <K extends Comparable<K>, V> implements DictionaryInterface <K,V>{ 
        Hashtable<K,V> h;
        Class<K> KeyType;
        HashDictionary(Class<K> KeyType) {
            h=new Hashtable<K, V>();
            this.KeyType=KeyType;
        }

          @Override
            public void remove(K key) {
                // TODO Auto-generated method stub
                h.remove(key);
            }

        @Override
        public void insert(K key, V value) {
            // TODO Auto-generated method stub

        }

        @Override
        public V getValue(K str) {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public K[] getKeys() {
            // TODO Auto-generated method stub
            return null;
        }


    } 
于 2013-10-04T10:09:48.407 に答える
0

DictionaryInterface が Hashtable または HashMap の一種である場合、それはパラメーターではなくパラメーターとしてremove想定できると思います。ObjectK

于 2013-10-04T10:10:31.753 に答える
0

インターフェイスにあるメソッドにのみ注釈を付けることができます。DictionaryInterfaceと呼ばれるメソッドがないようですpublic void remove(K key)

于 2013-10-04T10:11:58.613 に答える