Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获得';不匹配的空约束';实现Map.entrySet(Java8,Eclipse)时出错_Java_Eclipse_Annotations_Nullable_Non Nullable - Fatal编程技术网

获得';不匹配的空约束';实现Map.entrySet(Java8,Eclipse)时出错

获得';不匹配的空约束';实现Map.entrySet(Java8,Eclipse)时出错,java,eclipse,annotations,nullable,non-nullable,Java,Eclipse,Annotations,Nullable,Non Nullable,我得到了错误 The return type is incompatible with 'Set<Map.Entry<K,T>>' returned from Map<K,T>.entrySet() (mismatching null constraints) 包org.abego.util将默认空值定义为@NonNull: @org.eclipse.jdt.annotation.NonNullByDefault package org.abego.util

我得到了错误

The return type is incompatible with 'Set<Map.Entry<K,T>>' returned from Map<K,T>.entrySet() (mismatching null constraints)
org.abego.util
将默认空值定义为
@NonNull

@org.eclipse.jdt.annotation.NonNullByDefault
package org.abego.util;
我发现消除错误的唯一方法是使用
@NonNullByDefault({})
注释为
entrySet
删除默认的空值注释:

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();
    }
    ...
}
package org.abego.util;
...
默认情况下导入org.eclipse.jdt.annotation.nonNull;
公共抽象类MyMap实现了Map{
...
@凌驾
@非NullByDefault({})
公共集入口集(){
返回map.entrySet();
}
...
}
虽然这确实有效,但我想知道这是否是修复错误的正确方法


(我正在使用Eclipse 4.5(火星)和jdk1.8.0_60。)

您正在尝试覆盖此方法:

Set<Map.Entry<K, V>> entrySet();

有了这些外部注释,您的程序将被JDT的空分析所接受。

您正试图覆盖此方法:

Set<Map.Entry<K, V>> entrySet();

有了这些外部注释,您的程序将被JDT的空分析所接受。

谢谢,这就解决了问题。我现在正在使用外部空注释功能处理遇到的其他问题。这主要意味着将JRE方法的注释添加到“我的”外部注释文件中。由于我可能不是唯一一个遇到这种问题的人,我想知道是否已经有一些地方(比如Git repo之类)保存了Java 1.8 JRE等的外部注释文件。根据您的要求,我们的路线图上确实有。议程上的第一件事:知道其他人已经为JRE生成了注释存根jar,Eclipse将提供一个向导,用于将这些注释从jar导入到我们的文本格式。以后会有更多…谢谢,这解决了问题。我现在正在使用外部空注释功能处理遇到的其他问题。这主要意味着将JRE方法的注释添加到“我的”外部注释文件中。由于我可能不是唯一一个遇到这种问题的人,我想知道是否已经有一些地方(比如Git repo之类)保存了Java 1.8 JRE等的外部注释文件。根据您的要求,我们的路线图上确实有。议程上的第一件事:知道其他人已经为JRE生成了注释存根jar,Eclipse将提供一个向导,用于将这些注释从jar导入到我们的文本格式。以后会有更多。。。
@NonNull Set<@NonNull Map.Entry<K, V>> entrySet();
Set<Map.Entry<Foo,Bar>> entries = someMap.entrySet();
entries.add(null);
class java/util/Map

entrySet
 ()Ljava/util/Set<Ljava/util/Map$Entry<TK;TV;>;>;
 ()L1java/util/Set<L1java/util/Map$Entry<TK;TV;>;>;