标签:print 访问 匿名 jvm span sel int 用法 nal
1.嵌套类,类可以嵌套在其他类中:
class Outer { private val bar: Int = 1 class Nested { fun foo() = 2 } } val demo = Outer.Nested().foo() // == 2
2.内部类,标记为inner的嵌套类能够访问其外部类的成员。内部类会带有一个对外部类的对象的引用
class Outer { private val bar: Int = 1 inner class Inner { fun foo() = bar } } val demo = Outer().Inner().foo() // == 1 //参?限定的 this 表达式以了解内部类中的 this 的消歧义用法。
3.匿名内部类,使用对象表达式创建匿名内部类实例
window.addMouseListener(object : MouseAdapter() { override fun mouseClicked(e: MouseEvent) { ...... } override fun mouseEntered(e: MouseEvent) { ...... } })
3.1 注:对于 JVM 平台, 如果对象是函数式 Java 接口(即具有单个抽象方法的 Java 接口)的实例,你可以使 用带接口类型前缀的lambda表达式创建它:
val listener = ActionListener { println("clicked") }
4.枚举类,枚举类的最基本的用法是实现类型安全的枚举:
enum class Direction { NORTH, SOUTH, WEST, EAST } //每个枚举常量都是一个对象。枚举常量用逗号分隔。
5.初始化,因为每一个枚举都是枚举类的实例,所以他们可以是这样初始化过的
enum class Color(val rgb: Int) { RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF) }
6.匿名类,枚举常量还可以声明其带有相应方法以及覆盖了基类方法的匿名类
enum class ProtocolState { WAITING { override fun signal() = TALKING }, TALKING { override fun signal() = WAITING }; abstract fun signal(): ProtocolState }
如果枚举类定义任何成员,那么使用分号将成员定义中的枚举常量定义分隔开。枚举条目不能包含内部类以外的嵌套类型(已在 Kotlin 1.2 中弃用)。
7.在枚举类中实现接口
一个枚举类可以实现接口(但不能从类继承),可以为所有条目提供统一的接口成员实现,也可以在相应 匿名类中为每个条目提供各自的实现。只需将接口添加到枚举类声明中即可,如下所示:
enum class IntArithmetics : BinaryOperator<Int>, IntBinaryOperator { PLUS { override fun apply(t: Int, u: Int): Int = t + u }, TIMES { override fun apply(t: Int, u: Int): Int = t * u }; override fun applyAsInt(t: Int, u: Int) = apply(t, u) }
标签:print 访问 匿名 jvm span sel int 用法 nal
原文地址:https://www.cnblogs.com/developer-wang/p/13187716.html