zoukankan      html  css  js  c++  java
  • 枚举

    定义

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

    定义形式

    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") } } }
  • 相关阅读:
    Max retries exceeded with ur
    DHTML【1】
    广播发送与接收
    用例图之我见
    rman catalog (rman 恢复目录)
    面试高频题:单链表的逆置操作/链表逆序
    C#3.0 语言基础扩充
    hdu 1114 Piggy-Bank(完全背包)
    VSS Get Latest Version 没有提示recursive的对话框解决
    微服务实践分享(3)服务发现
  • 原文地址:https://www.cnblogs.com/rainboy2010/p/8966207.html
Copyright © 2011-2022 走看看