枚举
- 每个枚举常量都有在枚举类声明中获取其名称和位置的属性
- 枚举常量实现了 Comparable 接口
- 枚举常量顺序就是在枚举类中定义的顺序
-
enumValues<T>()
和enumValueOf<T>()
可以用泛型访问常量
普通枚举
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) {
}
})
网友评论