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