Kotlin

Kotlin Reference: Type aliases

  使用类型别名可以为已有类型提供了替代的名称。如果某个类型的名称很长,可以为其引入一个更短的名称,以便于使用。   类型别名可以缩短过长的泛型类型,举例来说,通常希望缩短集合类型:   可以为函数类型提供别名:   可以为内部类和嵌套类提供别名:   类型别名不会引入新的类型,它们等同于对应的原类型。当你添加了 typealias Predicate<T> 并在代码中使用 Predi…
Read more

Kotlin Reference: Type-Safe Builders

  建造者(Builder) 的概念在 Groovy 社区中颇为流行。建造者允许以半声明式的形式定义数据,常用于生成 XML、UI 元素布局、描述 3D 场景等。   Kotlin 提供的类型检查建造者适用于大多数用例,比 Groovy 中的动态类型的实现更加诱人。   Kotlin 也支持动态类型建造者,以满足其他用例的需要。 A type-safe builder example   考虑下面…
Read more

Kotlin Reference: Reflection

  反射是用于在运行时内省程序内部结构的一组语言和库的功能。Kotlin 的函数和属性是语言的一等公民,对其的内省(在运行时获取属性或函数的名称或类型)与函数式或响应式的风格密切相关。   在 Java 平台上,反射功能所需的运行时组件是以单独的 JAR 文件的形式发布的(kotlin-reflect.jar),这是为了减小不使用反射功能的应用的运行库尺寸。如果你要使用反射,请确保把该 .jar …
Read more

Kotlin Reference: Annotations

Annotation Declaration   注解可以为代码添加元数据。在类前使用 annotation 修饰符声明注解:   在注解类上使用元注解可以为注解添加额外的属性: @Target 指定可以被注解的元素类型(类、函数、属性、表达式等); @Retention 指定注解是否被存储到编译后的类文件中,以及是否在运行时能通过反射可见(默认二者都为是); @Repeatable 允许在一个元…
Read more

Kotlin Reference: Exceptions

Exception Classes   在 Kotlin 中,所有的异常类都是 Throwable 的子类。每一个异常都有一个消息、调用栈和一个可选的原因。   使用 throw 表达式抛出异常对象:   使用 try 表达式捕获异常:   可以有零个或多个 catch 代码块,finally 块可以省略,但必须至少有一个 catch 或 finally。 Try is an expression…
Read more

Kotlin Reference: Null Safety

Nullable types and Non-Null Types   Kotlin 的类型系统致力于从代码中消除空引用的风险(又名 The Billion Dollar Mistake)。   在包括 Java 在内的很多语言中,一个最常见的陷阱就是访问一个空引用的成员,继而导致空引用异常,等效于 Java 中的 NullPointerException,缩写为 NPE。   Kotlin 的类…
Read more

Kotlin Reference: Operator overloading

  Kotlin 允许我们为类型上的一组预定义的操作符提供实现。这些操作符具有固定的符号表现形式(如 + 或者 *)和固定的优先级。可以通过固定名称的成员函数或扩展函数来为对应类型(二元操作符左值的类型,或一元操作符的参数类型)提供操作符的实现。重载操作符的函数需要使用 operator 修饰符标记。   下面描述了重载不同操作符的约定。 Unary operations Unary prefix…
Read more

Kotlin Reference: Equality

  Kotlin 中有两种类型的相等: 引用相等(两个引用指向同一个对象) 结构相等(检查 equals()) Referential equality   使用 === 操作(及对应的否定形式 !==) 检查引用相等。当且仅当 a 和 b 指向同一个对象时,a === b 的值为 true。 Structural equality   使用 == 操作(及对应的否定形式 !=) 检查结构相等。按…
Read more

Kotlin Reference: This Expression

  使用 this 表达式表示当前的接收者(Receiver): 在类的成员中,this 指的是该类的当前的对象。 在扩展函数 和 带接收者的函数字面值 中,this 指的是在点(.)左边传递的接受者参数。   如果 this 不具有限定词,则它指的是自身所在的最内层的作用域。如果要引用外层作用域,则需要使用标签限定符(Label Qualifier): Qualified this   如果想要…
Read more

Kotlin Reference: Type Checks and Casts

is and !is Operators   使用 is(和其否定形式 !is)可以在运行时检查某个对象是否符合给定的类型: Smart Casts   在 Kotlin 中,很多情况下并不需要使用显式的转换操作符,因为编译器会记录对不可变(Immutable)值的 is 检查结果,并在需要时自动插入(安全的)转换:   如果否定的检查会导致返回,编译器也聪明到可以判断转换是否安全:   又或者转…
Read more