Kotlin中的扩展函数总结

作者: Android架构 | 来源:发表于2019-03-01 21:46 被阅读7次

在java中我们会去定义一些工具类,用来扩展一些类的方法,如下:

public class Utils {
    public static boolean isEmpty(String[] args){
        return args == null || args.length == 0;
    }

    public static boolean isNotEmpty(String[] args){
        return args.length > 0;
    }
}
public class Extends {
    public static void main(String... args){
        if (Utils.isEmpty(args)){

        }
        if (Utils.isNotEmpty(args)){

        }
    }
}

在kotlin中我们可以采取扩展函数来,可以不需要去写工具类,直接扩展现有类的方法如下:

fun main(args: Array<String>) {
    if (args.isEmpty()){
        
    }
}

isEmpty其实就是Array的扩展方法

@kotlin.internal.InlineOnly
public inline fun <T> Array<out T>.isEmpty(): Boolean {
    return size == 0
}

下面我们自己来定义一个扩展函数

fun main(args: Array<String>) {
    println("abc")
}

如果我想打印"abc"16次可以定义如下扩展函数

//扩展函数
fun String.multiply(int : Int):String{
    val stringBuilder = StringBuilder();
    for (i in 0 until int){
        stringBuilder.append(this)
    }
    return stringBuilder.toString()
}

fun main(args: Array<String>) {
    println("abc".multiply(16))
}

另外我们还可以对运算符进行重载

//运算符号重载
operator fun String.times(int : Int):String{
    val stringBuilder = StringBuilder();
    for (i in 0 until int){
        stringBuilder.append(this)
    }
    return stringBuilder.toString()
}

fun main(args: Array<String>) {
    println("abc"*16)
}

最后输出

abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc

除了方法可以扩展外,属性也是可以扩展的

val String.a : String
    get() = "abc"

var String.b : Int
    set(value){
        
    }
    get() = 5
fun main(args: Array<String>) {
    println("abc".a)
    println("abc".b)
}

以上就是我对kotlin中的扩展函数的一些总结,希望对大家有帮助~
【附录】

资料图

需要资料的朋友可以加入Android架构交流QQ群聊:513088520

点击链接加入群聊【Android移动架构总群】:加入群聊

获取免费学习视频,学习大纲另外还有像高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)等Android高阶开发资料免费分享。

相关文章

网友评论

    本文标题:Kotlin中的扩展函数总结

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