在 kotlin 中使用靜態(tài)的函數(shù)、變量旬痹,直接在包級寫函數(shù)和變量即可附井。
為了讓其他語言讨越,比如java調(diào)用起來簡單一點,也有其他的寫法永毅,就要用到伴生對象單例把跨。
class Latitude private constructor(val value: Double){
companion object {
@JvmStatic
fun ofDouble(double: Double):Latitude{
return Latitude(double)
}
fun ofLatitude(latitude: Latitude):Latitude{
return Latitude(latitude.value)
}
@JvmField
val TAG:String = "Latitude"
}
}
在 kotlin 中可以直接通過類名調(diào)用到 ofDouble ofLatitude TAG
而因為有了 @JvmStatic 和 @JvmField 在 java 中也可以直接像調(diào)用靜態(tài)成員一樣了。
Latitude.ofDouble(33.0)
Latitude.ofLatitude(Latitude.ofDouble(33.0))
println(Latitude.TAG)
每個類都可以對應(yīng)一個伴生對象
伴生對象的成員在全局是唯一的
伴生對象類似 java 語言中的靜態(tài)成員
我們寫 kotlin 的時候沼死,如非必要着逐,盡量考慮用包級函數(shù)、變量替代這種寫法漫雕。畢竟太不 kotlin了滨嘱。