枚举
定义
一个类的对象是有限且固定的,这种实例有限且固定的类称为枚举类。
定义形式
enum class enumName { .... }
枚举常量之间用逗号分开。
初始化
每一个枚举都是枚举类的实例,它们可以被初始化:
enum class Color(val rgb: Int) { RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF); override fun toString(): String { return rgb.toString(); } }
API
- EnumClass.valueOf(value: String): 由枚举值的名称获取枚举实例
-
EnumClass.values(): 获取所有的枚举实例
for (color in Color.values()) { println(color.toString()) }
匿名类与抽象方法
在枚举类中声明了抽象方法,所有的枚举常量都应声明其匿名类,并在匿名类中实现枚举类中声明的抽象方法,如果不实现,编译器会报错。
enum class MOBILE { XIAOMI { override fun print() { println("MI"); } }, HUAWEI { override fun print() { println("P10"); } }; abstract fun print() }
枚举类与接口
枚举类实现接口的情况与抽象方法类似,所有的枚举常量都应在其匿名类中实现接口的方法。
interface IClickListener {
fun doClick();
}
enum class WIDGET(var type: Int) : IClickListener { Button(1) { override fun doClick() { println("btn click") } }, EditText(2) { override fun doClick() { println("edittext click") } } }