Kotlin 枚举、内部类

枚举类

  • Kotlin 中用enum声明枚举
enum class EnumC {
    A, B, C
}

枚举类有两个默认的属性

// name 对应对象的值
EnumC.A.name 
 // ordinal 对应对象的下标
EnumC.B.ordinal
  • 每一个枚举都是枚举类的实例
enum class EnumC(var color: String) {

    A("颜色A"), B("颜色B"), C("颜色C")
}

内部类

  • 普通嵌套类
class Clazz {
    class FirstC {
        private val f1: Int = 0
        val f2: Int = 1

        class SecondC {
            private val S1: Int = 0
            val S2: Int = 1

            class ThridC {
                private val T1: Int = 0
                val T2: Int = 1
            }
        }
    }
}

调用方式如下

Clazz.FirstC().f2
Clazz.FirstC.SecondC().S2
Clazz.FirstC.SecondC.ThridC().T2

可以看出直接使用 类名. 来访问,普通嵌套没有外部引用,所以无法访问外部变量。

  • 嵌套内部类
class Clazz {
    class F {
        private val m = 1
        val n = 2

        inner class S {
            fun outStr() {
                println(m)
                println(n)
            }
        }
    }
}

调用方式如下,采用的是 F(). 的方式,这是持有外部类的引用

 Clazz.F().S().outStr()
  • 匿名内部类
    匿名内部类就是没有名字的内部类。匿名内部类也可以访问外部类的变量。
class Clazz {
    class F {
        fun r() {
            Thread(object : Runnable {//匿名内部类
                override fun run() {
                    
                }
            }).start()
        }
    }
}

你可能感兴趣的:(Kotlin)