伴生对象
概述
- 伴生对象关键字是
companion
,半理解为static
,用于外部模拟静态成员。 - 每个类只能定义一个伴生对象。
使用伴生对象
定义伴生对象
class Person {
companion object {
val TAG: String = "TAG"
fun show(str: String) {
println(str)
}
}
}
Kotlin中调用
Person.TAG
Person.show("hello world")
Java中调用
Person.Companion.getTAG();
Person.Companion.show("hello world");
修改伴生对象名称
class Person {
companion object INSTANCE {
val TAG: String = "TAG"
fun show(str: String) {
println(str)
}
}
}
Kotin中调用
Person.INSTANCE.TAG
//等价于
Person.TAG
Person.show("hello world")
//等价于
Person.INSTANCE.show("hello world")
Java中调用
Person.INSTANCE.getTAG();
Person.INSTANCE.show("hello world");
优化伴生对象
为了方便Java更好的识别伴生对象里的属性和方法,可以用const
或@JvmField
修饰变量,@JvmStatic
修饰方法。
class Person {
companion object {
@JvmField
val TAG: String = "TAG"
@JvmStatic
fun show(str: String) {
println(str)
}
}
}
Java中调用
Person.TAG;
Person.show("hello world");
优化公共常量
关键字const
用于编译期的常量
@file:JvmName("Constant")
package com.example.mykotlin
const val TAG = "TAG"
const val EXTRA = "EXTRA"
可以在Kotlin里直接使用
println(EXTRA)
println(TAG)