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



我对Kotlin很陌生,并试图创建一种bitset enum,其中int对应于状态,我可以通过切换单个位来切换单个状态。但是我被卡住了,对象可以没有状态

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,但得到的是Kotlinkotlin.reflect.KClass。要获得EnumSet.noneOf使用的Javajava.lang.Class,您可以访问java属性。

相关内容

  • 没有找到相关文章

最新更新