我目前正在使用
@DefaultAnnotation(NonNull.class)
package jobs;
import edu.umd.cs.findbugs.annotations.DefaultAnnotation;
import edu.umd.cs.findbugs.annotations.NonNull;
但是注解@edu.umd.cs.findbugs.annotations.DefaultAnnotation 已弃用: http://findbugs.sourceforge.net/api/edu/umd/cs/findbugs/annotations/DefaultAnnotation.html
他们建议使用 javax.annotation.ParametersAreNonnullByDefault 但是,DefaultAnnotation 不仅针对参数,还针对字段和方法。
那么,默认情况下将字段和方法设置为 Nonnull 的 javax.annotation 替代方案是什么?
最佳答案
据我所知没有。想要同样的东西,我复制了 source for ParametersAreNonnullByDefault
进入我自己的 FieldsAreNonnullByDefault
和 MethodsAreNonnullByDefault
并更改 @TypeQualifierDefault
值以匹配(FIELD
和 METHOD
各自)。 FindBugs 完美地拾取了这些新注释。
这是 FieldsAreNonnullByDefault
的示例:
package com.sample;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import javax.annotation.meta.TypeQualifierDefault;
/**
* This annotation can be applied to a package or class to indicate that the
* classes' fields in that element are nonnull by default unless there is
* <ul>
* <li>an explicit nullness annotation
* <li>a default field annotation applied to a more tightly nested element.
* </ul>
*/
@Documented
@Nonnull
@TypeQualifierDefault(ElementType.FIELD) // <-- METHOD for return values
@Retention(RetentionPolicy.RUNTIME)
public @interface FieldsAreNonnullByDefault {
}
关于java - 替代 FindBugs DefaultAnnotation for javax.annotation for fields and methods,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13414474/