【问题标题】:Using a java constant in a Kotlin annotation parameter在 Kotlin 注释参数中使用 java 常量
【发布时间】:2017-09-27 18:17:15
【问题描述】:

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

public static final String MY_CACHE_NAME = "cache_name"

@Cacheable(value = MY_CACHE_NAME)

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

在eclipse之外,一切都很好......

【问题讨论】:

  • 您可以尝试在 Kotlin 中将变量定义为“const”

标签: java eclipse caching spring-boot kotlin


【解决方案1】:

这很奇怪,这绝对可以。您可能有配置问题。检查您的 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() {}
    

【讨论】:

  • 我刚刚意识到这是一个 Eclipse 问题。如果我在 Eclipse 之外编译,一切都会好起来的。只是为了确保您的测试是在 Intelij 中进行的吗?我标记你的答案......这是一种配置问题。谢了!
  • 其实,我把问题改成了正确的问题……所以我会取消标记你的答案。谢谢!
  • Eclipse 插件是否已更新以支持您使用的任何版本的 Kotlin?
  • 是的,遇到了同样的问题。似乎是日食。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多