我想将@Nonnull
注释应用于给定包中的每个字段,参数和方法。
我有一个名为 NotNullByDefault 的注释:
@Documented
@Nonnull
@TypeQualifierDefault({
ElementType.FIELD,
ElementType.METHOD,
ElementType.PARAMETER
})
@Retention(RetentionPolicy.RUNTIME)
public @interface NotNullByDefault {
}
我现在在两个不同的包中有两个类:
Class Parent ,没有注释,我无法控制:
package com.parent;
public class Parent {
protected Object parentField;
protected Object parentMethod(Object parentParameter){
return parentParameter;
}
}
然后我们有了我的班级,孩子:
package com.child;
public class Child extends Parent {
private Object childField;
public Object childMethod(Object childParameter){
return childParameter;
}
}
现在通过以下方式在 Child 上应用我的注释:
// package-info.java in com.child
@NotNullByDefault
package com.child;
我希望findbugs 看 Child ,如下所示:
package com.child;
public class Child extends Parent {
@NotNullByDefault
private Object childField;
protected Object parentField;
@NotNullByDefault
public Object childMethod(@NotNullByDefault Object childParameter){
return childParameter;
}
protected Object parentMethod(Object parentParameter){
return parentParameter;
}
}
相反,它看起来像这样:
package com.child;
public class Child extends Parent {
@NotNullByDefault
private Object childField;
@NotNullByDefault
protected Object parentField;
@NotNullByDefault
public Object childMethod(@NotNullByDefault Object childParameter){
return childParameter;
}
@NotNullByDefault
protected Object parentMethod(@NotNullByDefault Object parentParameter){
return parentParameter;
}
}
我知道这是因为我收到了一个冗余的空检查警告,说明我不需要对父类的字段和方法进行无效检查。
如何防止未注释的继承方法和字段被findbugs看作注释?