我对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
属性。