如何在 kotlin 中初始化一个空的 EnumSet?
How do I initialize an empty EnumSet in kotlin?
我是 Kotlin 的新手,正在尝试创建一种位集枚举,其中整数对应于状态,我可以通过切换各个位来切换各个状态。但我坚持对象可以没有状态的地方。
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
属性.
我是 Kotlin 的新手,正在尝试创建一种位集枚举,其中整数对应于状态,我可以通过切换各个位来切换各个状态。但我坚持对象可以没有状态的地方。
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
属性.