美文网首页程序员KotlinAndroid开发经验谈
Kotlin特殊类(枚举、内部类)

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

作者: 世外大帝 | 来源:发表于2017-09-02 11:52 被阅读49次

    枚举

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

    相关文章

      网友评论

        本文标题:Kotlin特殊类(枚举、内部类)

        本文链接:https://www.haomeiwen.com/subject/tzoljxtx.html