【问题标题】:"String @NotNull []" syntax causes "'@NotNull' not applicable to type use" in intellij IDEA plugin“String @NotNull []”语法导致 intellij IDEA 插件中的“'@NotNull' 不适用于类型使用”
【发布时间】:2020-05-28 13:40:10
【问题描述】:

我正在尝试修复一个旧的、现已开源的 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 environmentcreating a plugin project 的设置说明进行操作。我的环境缺少什么来运行此代码?

【问题讨论】:

标签: java intellij-idea intellij-plugin


【解决方案1】:

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

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

比较:

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

【讨论】:

  • 安装注释库并更改模块依赖项的顺序后,错误消失了(项目结构 -> 模块 -> 插件模块 -> 依赖项 -> 注释库到顶部)。感谢您的详细解释!
【解决方案2】:

检查你的依赖,可能你已经包含了validation-bean和validator-api, 他们对javax.validation.constraints.NotNull 有相同的包;

只排除其中一个,一切正常

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-06
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多