3

Eclipse の NonNull アノテーションを使用しようとしていますが、以下で説明する動作を理解できません。Eclipseが何について不平を言っているのかわかりません....

コンパイル/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