java中我们常常需要定义很多工具类
package com.yzdzy.kotlin.chapter4.extend;
public class Utils {
public static boolean isEmpty(String[] args) {
return args == null || args.length == 0;
}
public static boolean isNotEmpty(String[] args) {
return args != null && args.length >= 0;
}
}
package com.yzdzy.kotlin.chapter4.extend;
public class ExtemdsJava {
public static void main(String[] args) {
if(args.length==0){
}
if(args.length!= 0) {
}
Utils.isEmpty(args);
Utils.isNotEmpty(args);
}
}
而kt 提供了扩展方法 当然我饿米也可以自己定义扩展方法
下面案例打印16次adc
package com.yzdzy.kotlin.chapter4.extend
import java.lang.StringBuilder
fun main(args: Array<String>) {
args.isNotEmpty()
args.isEmpty()
println("abc".multiply(16))
}
fun String.multiply(int: Int): String {
val stringBuilder = StringBuilder()
if (int > 0) {
for (i in 0 until int) {
stringBuilder.append(this)
}
return stringBuilder.toString()
}
return stringBuilder.append(this).toString();
}
格式如下
扩展的类名.自定义的方法
String.multiply
使用起来就跟系统方法一个样
"abc".multiply(16)
还可以定义类似python的语法
package com.yzdzy.kotlin.chapter4.extend
import java.lang.StringBuilder
fun main(args: Array<String>) {
args.isNotEmpty()
args.isEmpty()
println("abc" *16)
}
operator fun String.times(int: Int): String {
val stringBuilder = StringBuilder()
if (int > 0) {
for (i in 0 until int) {
stringBuilder.append(this)
}
return stringBuilder.toString()
}
return stringBuilder.append(this).toString();
}
"abc" * 16
java如何调用这些扩展方法呢
package com.yzdzy.kotlin.chapter4.extend;
public class ExtemdsJava {
public static void main(String[] args) {
String res=ExtendsKt.times("adc",16);
System.out.println(res);
}
}
简言之
ExtendsKt.times("adc",16);
扩展成员
package com.yzdzy.kotlin.chapter4.extend
import java.lang.StringBuilder
fun main(args: Array<String>) {
"".a
"".b=5
println("".b)
}
val String.a: String
get() = "abc"
var String.b: Int
get() = 5
set(value) {
}
来源:oschina
链接:https://my.oschina.net/u/4407031/blog/4315257