(インデックスの名前と場所を得るために| |一般的な使用方法|初期メンバ変数|抽象メソッドを実装|実装インタフェース列挙定数メソッドを呼び出す)[] Kotlin Kotlin列挙型列挙型クラス



I.列挙クラス一般的な使用法



列挙の最も一般的な方法: 列挙定義された定数、カンマで区切っては、各列挙定数はオブジェクトです。

/**
 * 枚举最常用的方法
 *      定义枚举常量 , 使用逗号隔开
 *      每个枚举常量都是一个对象
 *
 * 这里定义了 左 右 两个方向
 */
enum class Direction{
    LEFT, RIGHR
}


II。列挙クラスの初期化



列挙初期化: あなたは、変数を宣言するために、そのメンバーの列挙定数を定義するときは、値を初期化することができます

/**
 * 枚举初始化
 * 定义枚举常量时 , 为其声明一个成员变量 , 可以为其初始化一个值
 */
enum class Number (var num : Int){

    ONE(1),
    TWO(2)

}


III。クラスの匿名の列挙クラス



列挙クラスの抽象メソッド: 列挙法抽象クラスの列挙定数を定義することができます。

①の方法: 各列挙定数が匿名クラスで、ここで定義された抽象メソッドを実装する必要があります。

②場所を定義する: 最後に列挙クラスに列挙定数で定義された抽象メソッドを、

/**
 * 枚举常量匿名类
 */
enum class Student{

    GOOD_STUDENT{
        override fun say() {
            println("好学生")
        }

    },
    BAD_STUDENT{
        override fun say() {
            println("坏学生")
        }

    };  //定义了成员方法后, 最后一个枚举常量后需要使用分号

    /**
     * 定义枚举常量的抽象方法
     * 每个 枚举常量 必须在 匿名类中 实现此处定义的抽象方法
     * 枚举常量的抽象方法要定义在枚举类最后
     */
    abstract fun say()

}


IV。インタフェースを実装する列挙クラス



列挙クラスが実装するインタフェース: 列挙クラスは、インターフェイスを実装することができ、この方法は、列挙クラスで定義された抽象インタフェースと等価です。

/**
 * 声明一个接口
 */
interface Speak{
    fun speak()
}

/**
 * 该枚举类实现 human 接口
 *  每个枚举常量都要实现 speak 方法
 */
enum class Human : Speak{

    MAN{
        override fun speak() {
            println("男人")
        }
    },

    WOMEN{
        override fun speak() {
            println("女人")
        }

    }

}


V.は、定数名とインデックスの場所の列挙を取得します。



定数名とインデックスの場所の列挙を取得します:

①列挙クラス名を取得します:枚举类.常量名称.nameあなたは、列挙定数の名前を取得することができます。

(印刷は枚举类.常量名称また、列挙定数の名前をプリントアウトすることができます)

②列挙クラスインデックスを得る:枚举类.常量名称.ordinalゼロから数えて、列挙定位置指標を得ることができます。

//打印枚举类 , 直接打印其名称
//LEFT
println(Direction.LEFT)
//RIGHR
println(Direction.RIGHR)
//ONE
println(Number.ONE)
//TWO
println(Number.TWO)

//打印枚举类 name 名称
//LEFT
println(Direction.LEFT.name)
//RIGHR
println(Direction.RIGHR.name)
//ONE
println(Number.ONE.name)
//TWO
println(Number.TWO.name)

//打印枚举类 ordinal 位置索引
//0
println(Direction.LEFT.ordinal)
//1
println(Direction.RIGHR.ordinal)


VI。メンバー変数の列挙定数を取得します。



定義を列挙すると、そのメンバ変数を策定することができますenum class 枚举名称 : ( var 成员名 : 成员类型 )列挙定数が定義され、あなたはその値を初期化することができます枚举常量名称 ( 成员值 )

//打印枚举类 成员变量值
//1
println(Number.ONE.num)
//2
println(Number.TWO.num)


VII。列挙定数メソッド呼び出し



使用して、枚举类.枚举常量名.方法名()列挙方法の列挙定数匿名クラスを呼び出すことができます。

//调用枚举类的实现的自身定义的抽象方法
//好学生
Student.GOOD_STUDENT.say()
//坏学生
Student.BAD_STUDENT.say()

//调用枚举类实现的接口方法
//男人
Human.MAN.speak()
//女人
Human.WOMEN.speak()


VIII。Kotlin列挙完全なコード例



package enum

/**
 * 枚举最常用的方法
 *      定义枚举常量 , 使用逗号隔开
 *      每个枚举常量都是一个对象
 *
 * 这里定义了 左 右 两个方向
 */
enum class Direction{
    LEFT, RIGHR
}


/**
 * 枚举初始化
 * 定义枚举常量时 , 为其声明一个成员变量 , 可以为其初始化一个值
 */
enum class Number (var num : Int){

    ONE(1),
    TWO(2)

}

/**
 * 枚举常量匿名类
 */
enum class Student{

    GOOD_STUDENT{
        override fun say() {
            println("好学生")
        }

    },
    BAD_STUDENT{
        override fun say() {
            println("坏学生")
        }

    };  //定义了成员方法后, 最后一个枚举常量后需要使用分号

    /**
     * 定义枚举常量的抽象方法
     * 每个 枚举常量 必须在 匿名类中 实现此处定义的抽象方法
     * 枚举常量的抽象方法要定义在枚举类最后
     */
    abstract fun say()

}

/**
 * 声明一个接口
 */
interface Speak{
    fun speak()
}

/**
 * 该枚举类实现 human 接口
 *  每个枚举常量都要实现 speak 方法
 */
enum class Human : Speak{

    MAN{
        override fun speak() {
            println("男人")
        }
    },

    WOMEN{
        override fun speak() {
            println("女人")
        }

    }

}


fun main() {

    //打印枚举类 , 直接打印其名称
    //LEFT
    println(Direction.LEFT)
    //RIGHR
    println(Direction.RIGHR)
    //ONE
    println(Number.ONE)
    //TWO
    println(Number.TWO)

    //打印枚举类 name 名称
    //LEFT
    println(Direction.LEFT.name)
    //RIGHR
    println(Direction.RIGHR.name)
    //ONE
    println(Number.ONE.name)
    //TWO
    println(Number.TWO.name)

    //打印枚举类 ordinal 位置索引
    //0
    println(Direction.LEFT.ordinal)
    //1
    println(Direction.RIGHR.ordinal)

    //打印枚举类 成员变量值
    //1
    println(Number.ONE.num)
    //2
    println(Number.TWO.num)


    //调用枚举类的实现的自身定义的抽象方法
    //好学生
    Student.GOOD_STUDENT.say()
    //坏学生
    Student.BAD_STUDENT.say()

    //调用枚举类实现的接口方法
    //男人
    Human.MAN.speak()
    //女人
    Human.WOMEN.speak()

}

結果:

LEFT
RIGHR
ONE
TWO
LEFT
RIGHR
ONE
TWO
0
1
1
2
好学生
坏学生
男人
女人
公開された307元の記事 ウォンの賞賛1043 ビュー170万+

おすすめ

転載: blog.csdn.net/han1202012/article/details/105039211