1

エラーが発生します...

The return type is incompatible with 'Set<Map.Entry<K,T>>' returned from Map<K,T>.entrySet() (mismatching null constraints)

... a を実装し、次のようMapにオーバーライドする場合Map.entrySet:

package org.abego.util;

import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
...    
public abstract class MyMap<K, T> implements Map<K, T> {
    private Map<K, T> map = new LinkedHashMap<>();

    @Override
    public Set<java.util.Map.Entry<K, T>> entrySet() {
        return map.entrySet();
    }
    ...
}

パッケージorg.abego.utilは、デフォルトの nullness を次のように定義します@NonNull

@org.eclipse.jdt.annotation.NonNullByDefault
package org.abego.util;

エラーを取り除くために私が見つけた唯一の方法は、注釈をentrySet使用するために「デフォルトのnullness注釈を削除する」ことでした@NonNullByDefault({}):

package org.abego.util;
...
import org.eclipse.jdt.annotation.NonNullByDefault;

public abstract class MyMap<K, T> implements Map<K, T> {
    ...
    @Override
    @NonNullByDefault({})
    public Set<java.util.Map.Entry<K, T>> entrySet() {
        return map.entrySet();
    }
    ...
}

これは機能しますが、これがエラーを修正する正しい方法であるかどうか疑問に思っています。

(Eclipse 4.5 (Mars) と jdk1.8.0_60 を使用しています。)

4

1 に答える 1