来源于《Kotlin实战》中一些自己记录的常用用法
在Kotiln中使用集合类
Kotlin中的集合类也是Java中标准的集合类
var set = hashSetOf(1,2,3)
var list = arrayListOf(1,2,3)
val map = hashMapOf(1 to "one",2 to "two",3 to "three")
//获取list中最后的元素
val last = list.last()
//得到list中的最大值
val max = list.max()
Kotlin中的拓展函数和拓展属性
拓展属性
val String.lastChar: Char
get() = get(length - 1)
var StringBuilder.lastChar: Char
get() = get(length - 1)
set(value: Char) {
this.setCharAt(length - 1, value)
}
fun main(args: Array<String>) {
println("Kotlin".lastChar)
val sb = StringBuilder("Kotlin?")
sb.lastChar = '!'
println(sb)
}
拓展函数
fun String.lastChar(): Char = this.get(this.length - 1)
fun String.firstChar(): Char = get(0)
fun main(args: Array<String>) {
println("Kotlin".lastChar())
println("first".firstChar())
}
提取逻辑到拓展函数
class User(val id: Int, val name: String, val address: String)
fun User.validateBeforeSave() {
fun validate(value: String, fieldName: String) {
if (value.isEmpty()) {
throw IllegalArgumentException(
"Can't save user $id: empty $fieldName")
}
}
validate(name, "Name")
validate(address, "Address")
}
fun saveUser(user: User) {
user.validateBeforeSave()
// Save user to the database
}
fun main(args: Array<String>) {
saveUser(User(1, "", ""))
}
Kotlin中的接口
interface Clickable {
fun click()
fun default() = println("tgest")
}
class Button : Clickable {
override fun click() = println("I was clicked")
}
fun main(args: Array<String>) {
Button().click()
Button().default()
}
子类中实现接口中的方法要使用override修饰,而且接口中的方法可以进行实现。如接口中的default
修饰符 | 相关成员 | 评注 |
---|---|---|
final | 不能被重写 | 类中成员默认使用 |
open | 可以被重写 | 需要明确地表明 |
abstract | 必须被重写 | 只能在抽象类中使用 |
override | 重写父类或接口中的成员 | 如果没有final声明,默认为open |
网友评论