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;
}
}