【问题标题】:Create annotation that includes FindBugs' and Lombok's @NonNull创建包含 FindBugs 和 Lombok 的 @NonNull 的注释
【发布时间】:2016-05-13 20:02:36
【问题描述】:

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

到目前为止,我需要做以下事情:

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

这很丑陋,所以我想避免使用这种语法。我读到了嵌套注释(herehere),但我似乎无法找到一种方法来创建我自己的自定义注释,并将 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;
    }

【问题讨论】:

    标签: java annotations


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2018-01-13
        • 2018-12-21
        • 2019-10-16
        • 2019-06-29
        • 2017-05-05
        • 1970-01-01
        • 2017-06-22
        • 1970-01-01
        相关资源
        最近更新 更多