在Kotlin注释参数中使用一个java常量

在Spring Boot(使用Java)中,我通常将缓存名称放在静态最终字符串中,如下所示:

public static final String MY_CACHE_NAME = "cache_name" @Cacheable(value = MY_CACHE_NAME) 

但是,当我有这个缓存名称的Java类,我尝试在一个Kotlin缓存的方法中使用,Eclipse告诉我这不是一个“编译时常量”。 有没有办法解决这个问题?

日食之外,一切都很好…

这很奇怪,这应该肯定工作。 你可能有一个配置问题。 检查你的Kotlin插件和你的项目是否使用相同版本的Kotlin,不同的版本通常会导致奇怪的编译器错误。 如果可能,请在两个地方使用最新版本。

这是我尝试在1.1.50上工作得很好的示例代码(这是无稽之谈,但它编译):

  • MyConstants.java

     public class MyConstants { public static final String MY_CACHE_NAME = "cache_name"; } 
  • DemoApplication.kt

     @SpringBootApplication class DemoApplication fun main(args: Array) { SpringApplication.run(DemoApplication::class.java, *args) } @Cacheable(MyConstants.MY_CACHE_NAME) fun someFunction() {}