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) {
        
    }
})
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,518评论 9 118
  • JAVA面试题 1、作用域public,private,protected,以及不写时的区别答:区别如下:作用域 ...
    JA尐白阅读 4,882评论 1 0
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,129评论 18 399
  • 一、基本数据类型 注释 单行注释:// 区域注释:/* */ 文档注释:/** */ 数值 对于byte类型而言...
    龙猫小爷阅读 9,771评论 0 16
  • 从2月6日开始我决定要换一种生活方式,开始节食、跑步、理财、写心得,这段时间反反复复,坚持着-- 放松着-- 再坚...
    彩铅彩画阅读 2,166评论 0 0

友情链接更多精彩内容