【问题标题】:@PropertyKey Annotation is not working with Kotlin but with Java@PropertyKey 注解不适用于 Kotlin,但适用于 Java
【发布时间】:2019-04-30 06:58:14
【问题描述】:

当我在资源内的项目中添加一个新属性文件并将其命名为例如“lang1”时,BUNDLE_NAME 被正确识别。

但是,如果我添加一个包含 lang2_de 和 lang2_en 的 ResourceBundle 并尝试将其基本名称用作 BUNDLE_NAME,它会向我显示以下错误“无效的资源包引用 'lang2'。

所以我基本上有 3 个文件。

  1. lang1_de.properties
  2. lang2_de.properties
  3. lang2_en.properties

lang2 与“'base name' = lang2”捆绑到一个资源包中

这适用于 kotlin:

private const val BUNDLE_NAME = "lang1"

fun foo(@PropertyKey(resourceBundle = BUNDLE_NAME) key: String): String {
    return key
}

这不是:

private const val BUNDLE_NAME = "lang2"

fun foo(@PropertyKey(resourceBundle = BUNDLE_NAME) key: String): String {
    return key
}

但是如果我用 java 做同样的事情,它就可以工作......

private static final String BUNDLE_NAME = "lang2";

public static void foo(@PropertyKey(resourceBundle = BUNDLE_NAME) String key) {
    return key;
}

我这样做是为了获取有关在我的代码中使用的属性的信息。

两个示例的属性文件中的属性均已正确标记。

但是对于 lang2,代码中使用的字符串都显示有检查错误“字符串文字'testprop'似乎不是有效的属性键......”

我还在 JetBrains/java-annotations 中为此创建了一个问题:
https://github.com/JetBrains/java-annotations/issues/13

【问题讨论】:

    标签: java intellij-idea kotlin annotations


    【解决方案1】:

    感谢报告,错误已提交至https://youtrack.jetbrains.com/issue/KT-31359,请follow it for updates。

    【讨论】:

      猜你喜欢
      • 2021-07-12
      • 2020-01-13
      • 1970-01-01
      • 2019-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-19
      • 2016-02-15
      相关资源
      最近更新 更多