3

我正在尝试使用 Eclipse NonNull 注释,但是我无法理解下面描述的行为。我不明白 Eclipse 在抱怨什么......

Compiles/Eclipse 不会抱怨任何事情:

import org.eclipse.jdt.annotation.NonNull;    
public class NonNullStaticInnerClasses {

        public static class NonNull1{
            protected String nonNullString;
            public void setNonNullString(@NonNull String nonNullString){
                this.nonNullString = nonNullString;
            }
        }

        public static class NonNull2 extends NonNullStaticInnerClasses.NonNull1 {
            public void setNonNullString(@NonNull String nonNullString){
                this.nonNullString = nonNullString;
            }
        }
    }

Eclipse 抱怨“非法重新定义参数 nonNullString,从 NonNull1 继承的方法不限制此参数”但编译/运行良好:

import org.eclipse.jdt.annotation.NonNull;

public class NonNull1{
    protected String nonNullString;
    public void setNonNullString(@NonNull String nonNullString){
        this.nonNullString = nonNullString;
    }
}

public class NonNull2 extends NonNull1 {
    public void setNonNullString(@NonNull String nonNullString){
        this.nonNullString = nonNullString;
    }
}

在此处输入图像描述

环境:使用 Jdk8 的 Eclipse 4.4.1(编译器合规级别:1.8) 在此处输入图像描述

4

0 回答 0