枚举

定义

一个类的对象是有限且固定的,这种实例有限且固定的类称为枚举类。

定义形式

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") } } }
原文地址:https://www.cnblogs.com/rainboy2010/p/8966207.html