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"
}
}