如何在 kotlin 中初始化一个空的 EnumSet?

How do I initialize an empty EnumSet in kotlin?

我是 Kotlin 的新手,正在尝试创建一种位集枚举,其中整数对应于状态,我可以通过切换各个位来切换各个状态。但我坚持对象可以没有状态的地方。

https://pl.kotl.in/L_fTBahVN

import java.util.*

fun main() {
    var d = Door(100, EnumSet.noneOf(Status))
}

enum class Status(intValue: Int) {
    OPEN(1),
    CLOSED(1 shl 1),
    CRACKED(1 shl 2),
    BROKEN(1 shl 3)
}

class Door(val id: Int, val status: EnumSet<Status>) {}

此代码失败并出现错误 Classifier 'Status' does not have a companion object, and thus must be initialized here

我正在阅读另一个问题,他们说在 EnumSet.noneOf 中使用 Status.class,但这会引发更多错误。

使用

EnumSet.noneOf(Status::class.java)

Status::class 类似于 Java 中的 Status.class,但取而代之的是 Kotlin kotlin.reflect.KClass。要获得 EnumSet.noneOf 所占用的 Java java.lang.Class,您可以访问 java 属性.