一、解釋
每個類可以對應一個伴生對象
伴生對象的成員全局獨一份
伴生對象的成員類似于Java的靜态成員
二、Java中
調用kotlin類的方法需要加上
@JvmStatic
調用kotlin類的成員變量需要加上
@JvmField
三、形如java.lang包中math類
它所有的方法全部都是靜态的,在使用的時候,直接就可以math.xxx(方法)
四、形如Integer類中的方法,在Java中這樣使用
Integer a = Integer.valueOf(3);
五、在Kotlin中,形如這樣的可以直接調用
看一下代碼
Integer a = Integer.valueOf(3);
六、看一下例子
先看一下kotlin中的類
package net.println.kotlin.chapter4
/**
* @author:wangdong
* @description:伴生對象和靜态成員
*/
fun main(args: Array<String>) {
//val a = minOf(args[0].toInt(),args[1].toInt())
//用一下下面的定義
val latitude = Latitude.ofDouble(40.3)
val latitude2 = Latitude.ofLatitude(latitude)
println(Latitude.TAG)
}
/**定義一個緯度類*/
class Latitude private constructor(val value: Double){
//類的伴生對象
companion object {
//定義一個靜态方法
@JvmStatic
fun ofDouble(double: Double): Latitude {
return Latitude(double)
}
//定義一個靜态方法
@JvmStatic
fun ofLatitude(latitude: Latitude): Latitude {
return Latitude(latitude.value)
}
//定義一個靜态變量
@JvmField
val TAG: String = "hello"
}
}
看一下Java中寫法
package net.println.kotlin.chapter4;
/**
* @author:wangdong
* @description:在java中調用Latitude方法
*/
public class StaticJava {
Integer a = Integer.valueOf(3);
public static void main(String[] args) {
//需要調用一下companion,在調用方法
Latitude latitude = Latitude.Companion.ofDouble(54.4);
//可以在Latitude中方法上加一個注解@JvmStatic
Latitude latitude2 = Latitude.ofDouble(54.87);
System.out.println(Latitude.TAG);
}
}
結束