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

枚举

  • 每个枚举常量都有在枚举类声明中获取其名称和位置的属性
  • 枚举常量实现了 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) {

    }
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值