6.伴生对象与静态成员

定义:
1.关键字companion object{}
2.每一个类可以对应一个伴生对象
3.伴生对象的成员全局独一份
4.伴生对象的成员类似java的静态成员

class Latitude private constructor(val value: Double){
    companion object{
        val TAG: String = "Latitude"
        fun ofDouble(double: Double): Latitude{
            return Latitude(double)
        }
    }
}

fun main(args: Array) {
    val latitude = Latitude.ofDouble(3.0)
    println(Latitude.TAG)
}

java调用

Latitude latitude = Latitude.Companion.ofDouble(3.0);

如果想要跟kotlin调用方式一致,需要借助@JvmField,@JvmStatic

class Latitude private constructor(val value: Double){
    companion object{
        @JvmField
        val TAG: String = "Latitude"
        @JvmStatic
        fun ofDouble(double: Double): Latitude{
            return Latitude(double)
        }
    }
}

java调用

Latitude latitude = Latitude.ofDouble(3.0);

你可能感兴趣的:(6.伴生对象与静态成员)