エラーが発生します...
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 を使用しています。)