@PropertyKey注释不适用于Kotlin,但适用于Java

时间:2019-04-30 06:58:15

标签: java intellij-idea kotlin annotations

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

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

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

  1. lang1_de.properties
  2. lang2_de.properties
  3. lang2_zh.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

1 个答案:

答案 0 :(得分:1)

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