美文网首页
Kotlin常用用法事例(二)

Kotlin常用用法事例(二)

作者: 六花垂冰丸 | 来源:发表于2019-01-23 21:27 被阅读0次

    来源于《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

    相关文章

      网友评论

          本文标题:Kotlin常用用法事例(二)

          本文链接:https://www.haomeiwen.com/subject/oglfjqtx.html