"String @NotNull []" 语法导致 intellij IDEA 插件中出现“‘@NotNull’不适用于类型使用”

"String @NotNull []" syntax causes "'@NotNull' not applicable to type use" in intellij IDEA plugin

我正在尝试修复一个旧的、现在开源的 intellij IDEA 插件(CFML Plugin)中的一些错误

以下语法在多个文件中多次出现并产生错误:

String @NotNull []

这是错误的样子:

示例来自以下文件: https://github.com/JetBrains/intellij-plugins/blob/master/CFML/src/com/intellij/coldFusion/model/CfmlUtil.java#L249

这个语法有什么作用? 我还没有找到任何关于它的信息。似乎 @NotNull String[] 会做完全相同的事情而不会出现错误。

如何让它工作? 我完全按照 setting up a development environment and creating a plugin project 的设置说明进行操作。 运行 此代码缺少什么我的环境?

我怀疑您没有安装 JetBrains Annotations 库。请按照安装指南here.

String @NotNull [] 语法由应用于 String[] 类型 @NotNull 注释组成。请注意,这与 @NotNull String[] 不同,其中 @NotNull 仅适用于 String 类型。这样使用注解是说返回的字符串数组不会为null,但是里面的字符串可能是。

比较:

  • @NotNull String @Nullable []: 返回数组中的字符串必须为非空,但可以返回空数组。
  • @NotNull String @NotNull []: 返回数组中的字符串必须是非空的,数组也必须是非空的
  • @Nullable String @NotNull []: 字符串数组必须为非空,但其中的字符串可能为空
  • @Nullable String @Nullable []:字符串数组可能为空,也可能有空字符串

检查您的依赖项,可能是您包含了验证 bean 和验证器-api, javax.validation.constraints.NotNull;

他们有相同的包裹

去掉其中一个就OK了