[英]Can I not mix @NonNullByDefault with inherited classes that have no null annotation constraint?
我正在试验Eclipse null注释 ,我收到了一个错误。 我有一个A类(下面的例子)我没有源。 我想将它扩展为一个由@NonNullByDefault
注释的@NonNullByDefault
。 这会引发错误,因为@NonNull
约束与父类的无约束(可为空的可继承)参数不匹配。
Eclipse建议添加@Nullable
但这不会使错误消失。
难道我做错了什么?
A类:
public class A {
public void SomeMethod(
String[] a)
{
}
}
B级:
@NonNullByDefault
public class B extends A {
@Override
public void SomeMethod(
@Nullable String[] a)
{
}
}
我收到的错误是:
非法重新定义参数a,从A继承的方法不会约束此参数
可以将@NonNullByDefault
与继承的非约束类一起使用,但必须将显式的@Nullable
约束应用于任何被覆盖的方法的方法参数。 这是因为java的默认无约束行为是允许空值。
这里的混淆是@Nullable
注释错位的结果。 原始问题中的位置表明数组内容不应该为null而不是数组本身。
有一个错误,但它没有注释; 这是Eclipse(截至4.6)的结果,使用快速修复功能将注释放在错误的位置,加强了错误的放置,无法纠正错误。
数组的正确位置是:
public void SomeMethod(
String @Nullable[] a)
{
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.