一、扩展成员
为现有的类添加方法、属性
扩展方法: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<String>) {
//对这个字符串循环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
哈,结束了!