Kotlin
prons:
语法糖
Null Safety
函数式编程
代数类型
不可变对象
#1
kotlin中class没有静态方法/类属性,定义companion object,作为一个放置工厂函数和静态成员的地方,同时能够访问class其他方法和属性
鼓励在一个source文件中定义多个相关的class,fun
#2 Porperties and Fields
Backing Fields
用于在getter/setter函数中引用propertie对象,backing field的作用域仅仅存在于当前属性的setter/getter方法中。避免在setter/getter方法中对属性进行赋值时产生第归调用。
var counter = 0 // Note: the initializer assigns the backing field directly
set(value) {
if (value >= 0) field = value
}
Backing properties
显式声明backing field,对外表现为 val 属性,只能读不能写;在类内部表现为 var 属性,也就是说只能在类内部改变它的值。
private var _table: Map<String, Int>? = null
public val table: Map<String, Int>
get() {
if (_table == null) {
_table = HashMap() // Type parameters are