【19】kotlin 伴生对象与静态成员 kotlin static关键字
原创
©著作权归作者所有:来自51CTO博客作者mp624183768的原创作品,请联系作者获取转载授权,否则将追究法律责任
kotlin static关键字
kotlin 没有static了。。使用了伴生对象代替
companion object 里面包含的方法就自动加上了static关键字 看下面案例
伴生对象与静态成员
每个类可以对应一个伴生对象
伴生对象的成员全局独一份
伴生对象的成语言类似java的静态成员
静态成员考虑用包级函数、变量代替
jvmField 和JvmStatic的使用
java代码
package com.yzdzy.kotlin.chapter4.statics;
import com.yzdzy.kotlin.chapter4.Latitude;
public class StaticJava {
public static void main(String[] args) {
Latitude latitude = Latitude.Companion.ofDouble(3.0);
//@JvmStatic 修饰 就和java一样了
Latitude latitude2 = latitude.ofLatitude(latitude);
System.out.println(latitude.TAG);
}
}
kt
package com.yzdzy.kotlin.chapter4
fun main(args: Array<String>) {
//kt调用没事。。但是java调用需要加上.Companion
val latitude = Latitude.ofDouble(3.0)
//但是也有办法解决 那就是通过 @JvmStatic注解
val latitude2 = Latitude.ofLatitude(latitude)
//通过 @JvmField 注解
println(Latitude.TAG)
}
class Latitude private constructor(val value: Double) {
//这个类的伴生对象 相当于java中的类方法
companion object {
fun ofDouble(double: Double): Latitude {
return Latitude(double)
}
@JvmStatic
fun ofLatitude(latitude: Latitude): Latitude {
return Latitude(latitude.value)
}
@JvmField
val TAG: String = "Latitude"
}
}