我们如何在 Java 注释声明中引用 Kotlin 常量?

Com*_*are 13 kotlin

鉴于 Kotlin 的这一点:

object OldTownRoad {
  const val COWBOY_HATS = "from Gucci"
  const val WRANGLER = "on my booty"
}
Run Code Online (Sandbox Code Playgroud)

和这个 Java 类:

public class Scrap {
  @Named(OldTownRoad.COWBOY_HATS)
  public void lilNasXrefs() {
    System.out.println(OldTownRoad.COWBOY_HATS);
    System.out.println(OldTownRoad.WRANGLER);
  }
}
Run Code Online (Sandbox Code Playgroud)

编译器对println()调用很满意。它抱怨使用COWBOY_HATS@Named注解,说:“属性值必须是常量”,在这个Android 3.5.3工作室截图所示:

Kotlin 错误

我试着@JvmStatic@JvmField这些const val声明,但是编译器会抱怨,无论是有效的const属性。

我从 a 得到相同的结果companion object

class OldTownRoad {
  companion object {
    const val COWBOY_HATS = "from Gucci"
    const val WRANGLER = "on my booty"
  }
}
Run Code Online (Sandbox Code Playgroud)

从 Java 注释引用时,是否还有其他一些 Kotlin 常量语法可以工作?

Com*_*are 11

我忘了看看这是否是 Android Studio 的错误。:脸掌:

事实证明,如果您运行代码,它运行良好。Android Studio 3.5.3 似乎在毫无必要地抱怨。

我提交了一个错误报告以尝试确认问题。

非常感谢@natario,他的评论让我意识到这可能是 IDE 问题!