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

标签 java eclipse caching spring-boot kotlin

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

public static final String MY_CACHE_NAME = "cache_name"

@Cacheable(value = MY_CACHE_NAME)

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

在 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<String>) {
        SpringApplication.run(DemoApplication::class.java, *args)
    }
    
    @Cacheable(MyConstants.MY_CACHE_NAME)
    fun someFunction() {}
    

关于java - 在 Kotlin 注释参数中使用 java 常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46454648/

相关文章:

java - 告诉eclipse重新加载环境变量

java - java内置的缓存机制

asp.net - 如何使带有 SqlDependency 的 OutputCache 依赖于每个请求的数据库中的一行?

java - 防止 AWTEventMulticaster 放入堆栈

java - AccessDecisionManager 中的 HTTP 请求缺少 header

java - 内部类变量的可见性

JavaFX - TableView 的问题(NullPointerException)

java - 导入 javax.servlet 无法解析

java - 更改操作监听器内 Java 窗口对象的属性

java - hibernate getResultList() 返回不同的数据