我收到了错误......
The return type is incompatible with 'Set<Map.Entry<K,T>>' returned from Map<K,T>.entrySet() (mismatching null constraints)
......在实施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
将默认的空值定义为@NonNull
:
@org.eclipse.jdt.annotation.NonNullByDefault
package org.abego.util;
我发现摆脱错误的唯一方法是使用entrySet
注释为@NonNullByDefault({})
删除默认的nullness注释:
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。)