Kotlin 中的类不能拥有静态成员,即在 Kotlin 中是没有 static 关键字的,所以 Kotlin 中没有静态方法和静态成员。在 Kotlin 中想要表达这种概念,可使用 包级别函数(顶层函数) 和 伴生对象
一、顶层函数
- Java中有些类包含一堆静态函数,类本身并无意义。
- 在Kotlin中可以把这些函数直接放到代码文件的顶层,不用从属于任何的类,当在包外访问该函数时,直接import该函数的路径即可。在Java调用时,如 join.kt 文件将被编译名称为 JoinKt.java 的类。这些函数被编译为这个类的静态函数。
所以, Kotlin 中的顶层函数和属性 可用来 替代 Java 中的静态函数和属性
//join.kt 声明一个顶层函数 将函数直接放到代码文件的顶层
@file:JvmName("StringFunctions") //改变包含Kotlin顶层函数的生成的类的名称 此注解位于包名前面
@JvmOverloads
fun<T> joinToString(collection:Collection<T>,
separator: String = ",",
prefix:String="",
postfix:String=""):String {
val result = StringBuilder(prefix)
for((index, element) in collection.withIndex()){
if(index>0) result.append(separator)
result.append(element)
}
result.append(postfix)
return result.toString()
}
在Java中调用上述顶层函数:
public class Test11 {
public static void main(String[] args){
List<Integer> list = new ArrayList();
list.add(1);
list.add(2);
list.add(55);
System.out.println(StringFunctions.joinToString(list,"--"));
}
}
二、顶层属性
顶层属性:和顶层函数类似,将属性放到文件的顶层
const val UNIX_LINE_SEPARATOR = '\n' //作为顶层属性