Kotlin扩展成员(工具类的撰写和定义)

一、扩展成员
为现有的类添加方法、属性
扩展方法:fun X.y(): Z{}
扩展属性:val X.m 注意拓展属性不能初始化,类似于接口属性

二、下面来看一下例子
1.Java工具类的撰写

package net.println.kotlin.chapter4.extend;

/**
 * @author:wangdong
 * @description:g工具类
 */
public class Utils {
    //写一个判断参数是否为0的方法
    public static Boolean isEmpty(String[] args){
        return args.length == 0;
    }

    //写一个判断参数不为空的方法
    public static Boolean isNotEmpty(String[] args){
        return args.length > 0;
    }
}

2.Java调用工具类

package net.println.kotlin.chapter4.extend;

import javax.rmi.CORBA.Util;

/**
 * @author:wangdong
 * @description:Java拓展功能
 */
public class ExtendsJava {

    public static void main(String[] args) {

        //如果要判断参数数组是否为0
        if (Utils.isEmpty(args)){

        }
        //判断参数是否大于0
        if (Utils.isNotEmpty(args)){

        }

        //在java中调用kotlin中的方法
        System.out.println(ExtendsKt.times("intel",20));
    }
}

3.Kotlin工具类的撰写

package net.println.kotlin.chapter4.extend

/**
 * @author:wangdong
 * @description:
 */

fun main(args: Array) {

    //对这个字符串循环16次
    println("abcdef".multiply(16))
    //对这个字符串循环16次,调用的是String.times
    println("abc" * 16)

    /**调用成员方法*/
    "abc".b = 5
    println("abc".b)
}

/**扩展成员方法*/
/**定义一个循环方法,传入一个int,返回一个String*/
fun String.multiply(int: Int):String{
    val stringBuilder = StringBuilder()

    for (i in 0 until int){
        stringBuilder.append(this)
    }
    return stringBuilder.toString()
}

/**定义一个循环方法,传入一个int,返回一个String*/
operator fun String.times(int: Int):String{
    val stringBuilder = StringBuilder()

    for (i in 0 until int){
        stringBuilder.append(this)
    }
    return stringBuilder.toString()
}

/**扩展成员属性*/
val String.a: String
    get() = "abc"

var String.b: Int
    set(value) {

    }
    get() = 6

哈,结束了!

你可能感兴趣的:(Kotlin语言)