Kotlin常用用法事例(二)

来源于《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) {
    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) {
    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) {
    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) {
    Button().click()
    Button().default()
}

子类中实现接口中的方法要使用override修饰,而且接口中的方法可以进行实现。如接口中的default

修饰符 相关成员 评注
final 不能被重写 类中成员默认使用
open 可以被重写 需要明确地表明
abstract 必须被重写 只能在抽象类中使用
override 重写父类或接口中的成员 如果没有final声明,默认为open

你可能感兴趣的:(Kotlin常用用法事例(二))