当前位置: 首页 > 知识库问答 >
问题:

创建注释,包括FindBugs和Lombok的@NonNull

支华池
2023-03-14

我想使用Lombok的@NonNull注释来自动生成方法参数的空校验代码,同时还使用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;
    }

共有2个答案

陈富
2023-03-14

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

宋和颂
2023-03-14

您不能将注释与自定义注释“合并”,但是您可以在类作用域上默认使用@parametersarenonnulls,这应该允许edu。umd。反恐精英。芬德布格斯。注释。要推断的非空值

 类似资料:
  • 我在代码中使用Lombok自动生成getter和setter代码。我想添加其他个人注释并使用它。 例如,我想添加一个方法来验证列表中是否存在一个键: 创建注释后,我将执行以下操作:

  • 我有一把刀: 问题是,当我试图使用DAO进行加载调用时,使用DynamoDBMapper以field d1作为哈希键来获取项目,它会抛出一个DynamoDBExc0019,说:为公共DAO. getField2()找到了空键,但实际上表的值对应于field d2。问题,这是因为Lombok注释而不是手动突变代码,还是一般来说我们一起使用Lombok和DynamoDBAnnotions?

  • 问题内容: 查看FindBugs 2.0中的注释列表 ,我发现其中许多注释已被弃用。 其中一些(,等)已被弃用,因为它们具有等效的JSR-305注释。最终解决有关使用哪组注释的困境是一件好事。 但一些FindBugs的特定注释,如和,也被否决,我找不到自己的位置如何使用任何解释。我正在尝试迁移大量使用这些注释的代码库,但我有些卡住了。 我看到JSR-305具有,我可以用来替换的某些实例,但是并不能

  • 下面是Lombok的注释的java文档: 如果加上一个参数,lombok将在方法/构造函数主体的开头插入一个空检查,抛出一个{@code NullPointerException},参数名作为消息。如果放在字段上,任何为该字段赋值的生成方法也将生成这些空检查。请注意,任何名为{@code NonNull}且带有任何大小写和任何包的注释都将导致为生成的方法生成nullchecks(并且注释将被复制到

  • 我有一个JHipster项目,我在build.gradle中添加了对Lombok的依赖: 我为IntelliJ安装了Lombok插件。我已经在IntelliJ中打开了注释处理,我可以在IntelliJ IDE中生成而不出错,但是当我尝试从命令行生成时,会出现生成错误。Gradle似乎没有处理注释,也找不到getter/setter和log声明。项目运行时也不会出现任何错误。 命令行: 错误: 错误