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

tos*_*gic 6 enums enumset 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>) {}
Run Code Online (Sandbox Code Playgroud)

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

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

Swe*_*per 9

使用

EnumSet.noneOf(Status::class.java)
Run Code Online (Sandbox Code Playgroud)

Status::class与 Java类似Status.class,但使用了 Kotlin kotlin.reflect.KClass。java.lang.Class要获取所需的Java EnumSet.noneOf,您需要访问该java属性。