如何在Kotlin enums中保存类型?

时间:2018-03-26 06:12:32

标签: class enums static kotlin

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

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

现在我有一个自定义Image对象,它对应于磁盘上的实际图像,img[x, y]get / set方法)返回{ {1}}对象对应图像中位置x,y处的像素的颜色,或者接受将像素设置为该颜色的Color对象。所以Color完美无缺。

我希望能够img[x, y] = Color(50, 50, 50),但image[x,y] = Pixel.ON/OFFON显然属于OFF类型。

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

1 个答案:

答案 0 :(得分:3)

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

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

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