伴生对象:必须声明在某个类中。
每个类可以对应一个半生对象,伴生对象的成员全局独一份,伴生对象类似java中的静态成员。

(1)应用一

例子:
java中我们可以通过StringUtil.isEmpty()的方式直接调用如下代码

public class StringUtil {
public static boolean isEmpty(String str){
return "".equals(str)
}
}

在kotlin中如果我们想直接调用某个方法可以添加​​@JvmStatic​​​注解也可以使用​​companion​​​伴生对象,如果想直接使用一个属性,使用​​@JvmField​

class StringUtils{
companion object {
fun isEmpty(str:String):Boolean{
return "".equals(str)
}
}
}

kotlin中调用方式

class Tests {
fun main(arg: ArrayList<String>) {
StringUtils.isEmpty("")
}
}

java中调用kotlin的方式

   StringUtils.Companion.isEmpty("");

(2)应用二

单例模式

class Single private constructor(){
companion object {
fun get():Single{
return Holder.instance
}
}
private object Holder{
val instance=Single()
}
}