如何在Kotlin中初始化一个空的枚举?

发布于 2025-01-25 15:00:46 字数 629 浏览 2 评论 0原文

我是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.class enumset.noneof ,但这会带来更多的错误。

I'm pretty new to Kotlin and trying to create a sort of bitset enum where ints correspond to state and I can toggle individual states by toggling individual bits. But I'm stuck on where an object can have no state.

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>) {}

This code fails with the error Classifier 'Status' does not have a companion object, and thus must be initialized here

I was reading another question where they said to use Status.class inside the EnumSet.noneOf, but that throws even more errors.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

眼睛会笑 2025-02-01 15:00:46

使用

EnumSet.noneOf(Status::class.java)

status :: class与java中的status.class相似,但是获得了一个Kotlin kotlin.reflect.reflect.kclass.kclass。要获取java java.lang.class enumset.noneof接受,您可以访问java属性。

Use

EnumSet.noneOf(Status::class.java)

Status::class is similar to Status.class in Java, but gets a Kotlin kotlin.reflect.KClass instead. To get the Java java.lang.Class that EnumSet.noneOf takes, you access the java property.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文