摘要:
作用域函数 Kotlin 标准库包含几个函数,它们的唯一目的是在对象的上下文中执行代码块。当对一个对象调用这样的函数 并提供一个 lambda 表达式时,它会形成一个临时作用域。在此作用域中,可以访问该对象而无需其名称。这些 函数称为作用域函数。共有以下五种:let 、run 、with 、appl 阅读全文
摘要:
类引用 最基本的反射功能是获取 Kotlin 类的运行时引用。要获取对静态已知的 Kotlin 类的引用,可以使用 类字面值 语法 val c = MyClass::class 请注意,Kotlin 类引用与 Java 类引用不同。要获得 Java 类引用,请在 KClass 实例上使用 .java 阅读全文
摘要:
注解声明 注解是将元数据附加到代码的方法。要声明注解,请将 annotation 修饰符放在类的前面 annotation class Fancy 注解的附加属性可以通过用元注解标注注解类来指定 — @Target指定可以用该注解标注的元素的可能的类型(类、函数、属性、表达式等); — @Reten 阅读全文
摘要:
异常类 Kotlin 中所有异常类都是 Throwable 类的子孙类。每个异常都有消息、堆栈回溯信息以及可选的原因 使用 throw-表达式来抛出异常 throw Exception("Hi There!") 使用 try-表达式来捕获异常: try { // 一些代码 } catch (e: S 阅读全文
摘要:
可空类型与非空类型 Kotlin 的类型系统旨在从我们的代码中消除 NullPointerException 。NPE 的唯一可能的原因可能是: — 显式调用 throw NullPointerException() — 使用了下文描述的 !! 操作符 — 有些数据在初始化时不一致,例如当 — 传递 阅读全文
摘要:
Kotlin允许我们为自己的类型提供预定义的一组操作符的实现。这些操作符具有固定的符号表示(如 + 或 *) 和固定的优先级。为实现这样的操作符,我们为相应的类型(即二元操作符左侧的类型和一元操作符的参数类 型)提供了一个固定名字的成员函数或扩展函数。重载操作符的函数需要用 operator 修饰符 阅读全文
摘要:
Kotlin 中有两种类型的相等性: — 结构相等(用 equals() 检测); — 引用相等(两个引用指向同一对象)。 结构相等 结构相等由 ==(以及其否定形式 !=)操作判断。按照惯例,像 a == b 这样的表达式会翻译成: a?.equals(b) ?: (b null) 也就是说如果 阅读全文
摘要:
This表达式 为了表示当前的 接收者 我们使用 this 表达式: — 在类的成员中,this指的是该类的当前对象。 — 在扩展函数或者带有接收者的函数字面值中,this 表示在点左侧传递的 接收者 参数。 如果 this 没有限定符,它指的是最内层的包含它的作用域。要引用其他作用域中的 this 阅读全文