Kotlin 混合值枚举(常数和数据类)

Kotlin 混合值枚举(常数和数据类),kotlin,enums,Kotlin,Enums,我有以下数据类表示红色/绿色/蓝色值的颜色: 数据类HexColor( val red:Byte, 瓦尔蓝:字节, 绿色值:字节 ) 我正在尝试使用定义的颜色(RED,YELLOW,PURPLE,…)和其他红/绿/蓝颜色(使用HexColor)创建枚举: enum类颜色{ 红色 黄色的, 紫色 // ... HEX_COLOR:HexColor//如何表示这一点? } 前面的代码没有编译,只是显示了我想要实现的一般思想 如何定义我的enum以将颜色表示为不带参数的定义值(例如黄色等常量)和H

我有以下
数据类
表示红色/绿色/蓝色值的颜色:

数据类HexColor(
val red:Byte,
瓦尔蓝:字节,
绿色值:字节
)
我正在尝试使用定义的颜色(
RED
YELLOW
PURPLE
,…)和其他红/绿/蓝颜色(使用
HexColor
)创建枚举:

enum类颜色{
红色
黄色的,
紫色
// ...
HEX_COLOR:HexColor//如何表示这一点?
}
前面的代码没有编译,只是显示了我想要实现的一般思想

如何定义我的
enum
以将
颜色
表示为不带参数的定义值(例如
黄色
等常量)和
HexColor
(带参数的数据类)。可能吗

想法是这样使用,或类似的:

val red=Color.red
val blue=Color.HEX_Color(0,255,0)

对于enum类来说这是不可能的(所有enum实例都需要在编译时定义),但是您可以尝试以下方法:

类颜色私有构造函数(val r:Float,val g:Float,val b:Float){
伴星{
val RED=颜色(1.0f、0.0f、0.0f)
val绿色=颜色(0.0f、1.0f、0.0f)
val蓝色=颜色(0.0f、0.0f、1.0f)
颜色(r:Float,g:Float,b:Float)=颜色(r,g,b)
}
}