随笔分类 - Kotlin
摘要:委托模式是软件设计模式中的一项基本技巧。在委托模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。 Kotlin 直接支持委托模式,更加优雅,简洁。Kotlin 通过关键字 by 实现委托。 类委托 类的委托即一个类中定义的方法实际是调用另一个类的对象的方法来实现的。
阅读全文
摘要:Kotlin 用对象表达式和对象声明来实现创建一个对某个类做了轻微改动的类的对象,且不需要去声明一个新的子类。 对象表达式 通过对象表达式实现一个匿名内部类的对象用于方法的参数中: 对象可以继承于某个基类,或者实现其他接口: 如果超类型有一个构造函数,则必须传递参数给它。多个超类型和接口可以用逗号分
阅读全文
摘要:泛型,即 "参数化类型",将类型参数化,可以用在类,接口,方法上。 与 Java 一样,Kotlin 也提供泛型,为类型安全提供保证,消除类型强转的烦恼。 声明一个泛型类: 创建类的实例时我们需要指定类型参数: 以下实例向泛型类 Box 传入整型数据和字符串: 输出结果为: 定义泛型类型变量,可以完
阅读全文
摘要:枚举类最基本的用法是实现一个类型安全的枚举。 枚举常量用逗号分隔,每个枚举常量都是一个对象。 枚举初始化 每一个枚举都是枚举类的实例,它们可以被初始化: 默认名称为枚举字符名,值从0开始。若需要指定值,则可以使用其构造函数: 枚举还支持以声明自己的匿名类及相应的方法、以及覆盖基类的方法。如: 如果枚
阅读全文
摘要:数据类 Kotlin 可以创建一个只包含数据的类,关键字为 data: 编译器会自动的从主构造函数中根据所有声明的属性提取以下函数: equals() / hashCode() toString() 格式如 "User(name=John, age=42)" componentN() functio
阅读全文
摘要:Kotlin 可以对一个类的属性和方法进行扩展,且不需要继承或使用 Decorator 模式。 扩展是一种静态行为,对被扩展的类代码本身不会造成任何影响。 扩展函数 扩展函数可以在已有类中添加新的方法,不会对原类做修改,扩展函数定义形式: receiverType:表示函数的接收者,也就是函数扩展的
阅读全文
摘要:Kotlin 接口与 Java 8 类似,使用 interface 关键字定义接口,允许方法有默认实现: interface MyInterface { fun bar() // 未实现 fun foo() { //已实现 // 可选的方法体 println("foo") } } interface
阅读全文
摘要:Kotlin 中所有类都继承该 Any 类,它是所有类的超类,对于没有超类型声明的类是默认超类: Any 默认提供了三个函数: 注意:Any 不是 java.lang.Object。 如果一个类要被继承,可以使用 open 关键字进行修饰。 构造函数 子类有主构造函数 如果子类有主构造函数, 则基类
阅读全文
摘要:类定义 Kotlin 类可以包含:构造函数和初始化代码块、函数、属性、内部类、对象声明。 Kotlin 中使用关键字 class 声明类,后面紧跟类名: 我们也可以定义一个空类: 可以在类中定义成员函数: 类的属性 属性定义 类的属性可以用关键字 var 声明为可变的,否则使用只读关键字 val 声
阅读全文
摘要:For 循环 for 循环可以对任何提供迭代器(iterator)的对象进行遍历,语法如下: 循环体可以是一个代码块: 如上所述,for 可以循环遍历任何提供了迭代器的对象。 如果你想要通过索引遍历一个数组或者一个 list,你可以这么做: 注意这种"在区间上遍历"会编译成优化的实现而不会创建额外对
阅读全文
摘要:Kotlin 的基本数值类型包括 Byte、Short、Int、Long、Float、Double 等。不同于Java的是,字符不属于数值类型,是一个独立的数据类型。 字面常量 下面是所有类型的字面常量: 十进制:123 长整型以大写的 L 结尾:123L 16 进制以 0x 开头:0x0F 2 进
阅读全文
摘要:IF 表达式 一个 if 语句包含一个布尔表达式和一条或多条语句。 我们也可以把 IF 表达式的结果赋值给一个变量。 这也说明我也不需要像Java那种有一个三元操作符,因为我们可以使用它来简单实现: 实例 输出结果为: 使用区间 使用 in 运算符来检测某个数字是否在指定区间内,区间格式为 x..y
阅读全文
摘要:Kotlin 文件以 .kt 为后缀。 包声明 代码文件的开头一般为包的声明: kotlin源文件不需要相匹配的目录和包,源文件可以放在任何文件目录。 以上例中 test() 的全名是 com.runoob.main.test、Runoob 的全名是 com.runoob.main.Runoob。
阅读全文