创建包含 FindBugs 和 Lombok @NonNull的注释



我想使用Lombok的@NonNull注释来自动生成方法参数的null检查代码,同时使用FindBugs的@NonNull来使用静态分析工具,并在任何情况下生成适当的警告。

到目前为止,我需要做以下工作:

public void doSomething (@lombok.NonNull @edu.umd.cs.findbugs.annotations.NonNull Object parameter)
    {
    // Do something
    }

这很难看,所以我想避免使用这种语法。我读过嵌套注释(这里和这里),但我似乎找不到一种方法来创建我自己的自定义注释,将NonNull注释都作为嵌套注释。我是不是想做一些不起作用的事情?

这是我的最新尝试:

@Documented
@Retention (RetentionPolicy.CLASS)
@Target (value={ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.LOCAL_VARIABLE})
public @interface MyNonNull
    {
    public lombok.NonNull lombokNonNull () default @lombok.NonNull; 
    public edu.umd.cs.findbugs.annotations.NonNull findBugsNonNull () default @edu.umd.cs.findbugs.annotations.NonNull;
    }

您不能将注释与自定义注释"合并",但是您可以在类作用域上使用@ParametersAreNonnullByDefault,这应该允许推断edu.umd.cs.findbugs.annotations.NonNull

我认为您的两个链接都不会对您有所帮助。您需要使用自定义注释从两者进行扩展,但您甚至不能从其中一个进行扩展,因为所有注释都有annotation的隐式extends子句。

最新更新