java - 在 java switch 表达式中使用 kotlin 常量

标签 java kotlin

我最近一直在研究 Kotlin lang 及其与 java 的互操作性。我有以下java代码:

public void select(int code) {
    switch code {
        case Service.CONSTANT_ONE:
            break;
        case Service.CONSTANT_TWO:
             break;
        default:
             break;
    }
}

其中Service.kt写成如下:

class Service {
    companion object {
        val CONSTANT_ONE = 1
        val CONSTANT_TWO = 2
    }
}

Java 编译器说 CONSTANT_ONE 和 CONSTANT_TWO 必须是常量,但我不知道如何使它们比现在更常量。所以我的问题是:如何在 java swicth 语句中使用来自 kotlin 的常量?

我正在使用 jdk8 和 kotlin M14。

最佳答案

M14 更改状态“从 M14 开始,我们需要在 Kotlin 常量前加上 const 才能在注解中使用它们,并将其视为 Java 中的字段”

class Service {
    companion object {
        const val CONSTANT_ONE = 1
        const val CONSTANT_TWO = 2
    }
}

IntelliJ 在 Java 案例中仍然向我显示错误,但它可以编译并工作。

关于java - 在 java switch 表达式中使用 kotlin 常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33109264/

相关文章:

java - 如何访问复杂的类链中的类字段

java - 升级到 Boot 1.2 后无法访问 Spring Boot 执行器健康端点

java - 关闭 AsynchronousSocketChannel 时连接重置错误

java - 通过 TCP 使用 JeroMQ,有没有办法获取发件人的 IP?

java - 智能 : recognize a spring configuration file in jar

java - Android:使用 Messengers for IPC 实现同步/阻塞 API

android - 迁移到 New Places SDK 客户端请求 Play 商店的 ACCESS_FINE_LOCATION 权限

gradle - 尝试将木材添加到Kotlin项目中会导致多个 'Unable to resolve dependency for…' Gradle错误

java - 当针对 Android API < 26 时,Duration. Between 的最佳替代方案是什么?

android - Kotlin 中的 EvictingQueue