【问题标题】:How to conserve types in Kotlin enums?如何在 Kotlin 枚举中保存类型?
【发布时间】:2018-03-26 06:12:31
【问题描述】:

我有一个enum,有两种颜色代表onoff 像素,一种是浅灰色,另一种是深灰色:

enum class Pixel(val state: Color) {
    ON (Color(200, 200, 200)),
    OFF(Color(50, 50, 50))
}

现在我有一个自定义的Image 对象,它对应于磁盘上的实际图像和img[x, y](ergo get/set 方法)要么返回一个Color 对象对应的颜色图像中位置 x,y 处的像素或接受将像素设置为该颜色的 Color 对象。所以img[x, y] = Color(50, 50, 50) 完美运行。

我希望能够做到image[x,y] = Pixel.ON/OFFONOFF 显然属于Pixel 类型。

如何达到我想要的效果,能做到image[x,y] = Pixel.ON/OFF?我已经使用 ON/OFF 作为“静态”成员使用伴生对象使其工作,但必须有一种更漂亮、更优雅的方式来做到这一点。

【问题讨论】:

    标签: class enums static kotlin


    【解决方案1】:

    您可以将Pixel 设为一个单例object,它包含两个Color 类型的属性,如下所示:

    object Pixel {
        val ON = Color(200, 200, 200)
        val OFF = Color(50, 50, 50)
    }
    

    这将为您提供image[x, y] = Pixel.ON 等所需的语法。

    【讨论】:

    • 谢谢!!我几乎求助于做一个普通的旧 Java 类来获取静态属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2019-08-14
    • 2021-07-20
    • 1970-01-01
    相关资源
    最近更新 更多