在Kotlin中的枚举类的方法内部访问枚举值

时间:2018-07-10 18:54:08

标签: enums kotlin

我有在内部声明方法的枚举类

enum class MyEnum {
    VAL1, VAL2, VAL3;

    fun myFunc(): Any{
         // Here I want to access selected value
         // VAL1 in my example
    }
}

我可以这样调用此方法

MyEnum.VAL1.myFunc()

但是是否有可能在myFunc内部调用value方法?在我的示例中为VAL1

2 个答案:

答案 0 :(得分:4)

您可以使用thisthis.ordinal来返回此枚举常量的序数
同样,如果您这样做:

fun myFunc(): Any{
    val array = MyEnum.values()
    println(array[this.ordinal])
    println(this)
    return array[this.ordinal]
}

并致电MyEnum.VAL2.myFunc(),您将看到VAL2

答案 1 :(得分:1)

请尝试

enum class MyEnum {
    VAL1 {
        override fun myFunc() {
            //do something with VAL1 using this
        }
    },
    VAL2 {
        override fun myFunc() {
            //do something with VAL2 using this
        }
    },
    VAL3 {
        override fun myFunc() {
            //do something with VAL3 using this
        }
    };

    abstract fun myFunc()
}