Kotlin特殊类(枚举、内部类)

枚举

  • 每个枚举常量都有在枚举类声明中获取其名称和位置的属性
  • 枚举常量实现了 Comparable 接口
  • 枚举常量顺序就是在枚举类中定义的顺序
  • enumValues()enumValueOf()可以用泛型访问常量

普通枚举

enum class Direction {
    NORTH, SOUTH, WEST, EAST
}

初始化

enum class Color(val rgb: Int) {
        RED(0xFF0000),
        GREEN(0x00FF00),
        BLUE(0x0000FF)
}

枚举匿名类

匿名类和java一样,常量之间要用;隔开

enum class ProtocolState {
    WAITING {
        override fun signal() = TALKING
    },

    TALKING {
        override fun signal() = WAITING
    };

    abstract fun signal(): ProtocolState
}

内部类

嵌套内部类

这个用的较多的应该是bean

class Outer {
    private val bar: Int = 1
    class Nested {
        fun foo() = 2
    }
}

val demo = Outer.Nested().foo() // == 2

普通内部类

  • 内部类可以直接访问外部类的对象
  • 如果有歧义,可以用this表达式
class Outer {
    private val bar: Int = 1
    inner class Inner {
        fun foo() = bar
    }
}

val demo = Outer().Inner().foo() // == 1

匿名内部类

这是直接复制过来的js引用,这个用的最多的估计还是回调或者监听之类的

window.addMouseListener(object: MouseAdapter() {
    override fun mouseClicked(e: MouseEvent) {
        
    }

    override fun mouseEntered(e: MouseEvent) {
        
    }
})

你可能感兴趣的:(Kotlin特殊类(枚举、内部类))