Findbugs看到了儿童班'继承的字段和方法为Nonnull

时间:2016-05-01 20:51:25

标签: java inheritance annotations package findbugs

我想将@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看作注释?

0 个答案:

没有答案