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