我有一个enum
,其中2种颜色代表on
和off
像素,一种是浅灰色,另一种是深灰色:
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/OFF
和ON
显然属于OFF
类型。
如何才能达到我想要的效果,能够Pixel
?我已经使用image[x,y] = Pixel.ON/OFF
作为使用伴侣对象的“静态”成员工作,但必须有一个更漂亮,更优雅的方法来做它。
答案 0 :(得分:3)
您可以将Pixel
设为包含Color
类型的两个属性的单身object
,如下所示:
object Pixel {
val ON = Color(200, 200, 200)
val OFF = Color(50, 50, 50)
}
这将为您提供所需的image[x, y] = Pixel.ON
语法,依此类推。