Kotlin 中创建类似 Java 的静态方法

Java 中经常会写个 Utils 工具类来将代码中常用的功能抽出来。在 Kotlin 中该怎么写呢? 代码就类似下面的这种:

1
2
3
4
5
6
7
8
9
10
public class Utils {

public static boolean isEmpty(String string){
return string != null && string.length() == 0;
}

public static boolean isWeakEmpty(String string){
return isEmpty(string) && string.trim().length() == 0;
}
}

使用起来当然就是:

1
boolean result = Utils.isEmpty(name);

Kotlin 中没有 static 类型的 fun,但是我们可以使用 Companion Objects

1
2
3
4
5
class MyClass {
companion object Factory {
fun create(): MyClass = MyClass()
}
}

companion object 的名字可以省略

1
2
3
4
5
6
class MyClass {
companion object {
}
}

val x = MyClass.Companion

使用起来就是:

1
val instance = MyClass.create()

注意: 这只是形式上类似于 Java 的 static ,但是在运行时实际是作为实例对象的成员存在的。

改造 Utils.java -> Utils.kt

1
2
3
4
5
6
7
8
9
10
object Utilss {

fun isEmpty(string: String?): Boolean {
return string != null && string.length == 0
}

fun isWeakEmpty(string: String): Boolean {
return isEmpty(string) && string.trim { it <= ' ' }.length == 0
}
}

使用了 object 关键字, 代码看起来就是:

1
println(Utils.isEmpty(username))

参考链接:
Kotlin文档 - Object Expressions and Declarations

文章来自: https://hanks.pub