kotlin静态属性、静态方法
所属分类:Android | 发布于 2023-12-13
Kotlin没有static关键字,Kotlin类不支持静态方法和静态属性。
Kotlin支持全局函数和变量,能一定程度上缓解没有没有static的尴尬。
但Kotlin提供了其它的特性,可以变通的实现静态属性和静态方法。
1、使用object类
object类定义
object DateUtil {
val TAG : String = "DateUtil"
/**
* 获取当前系统时间
*/
fun getTime(): String {
val date = Date(System.currentTimeMillis())
val df = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
return df.format(date)
}
/**
* 获取当前系统日期
*/
fun getDate(): String {
val date = Date(System.currentTimeMillis())
val df = SimpleDateFormat("yyyy/MM/dd/")
return df.format(date)
}
}
静态方法与属性调用
DateUtil.TAG
DateUtil.getTime()
2、使用companion object伴生对象
在Kotlin类中定义object对象,那么称这个对象为该类的伴生对象,伴生对象要使用companion声明。
在类的内部用companion object{}包裹所需要的静态方法。
伴生对象及方法定义
class DateUtil {
companion object {
var TAG: String = "DateUtil"
/**
* 获取当前系统时间
*/
fun getTime(): String {
val date = Date(System.currentTimeMillis())
val df = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
return df.format(date)
}
/**
* 获取当前系统日期
*/
fun getDate(): String {
val date = Date(System.currentTimeMillis())
val df = SimpleDateFormat("yyyy/MM/dd/")
return df.format(date)
}
}
}
静态方法与属性调用
DateUtil.TAG
DateUtil.getTime()
虽然伴生对象的成员看起来很像其它语言中的类的静态成员,但在运行期间,这些成员任然是真实对象的实例成员。不过可以使用@JvmStatic进行注释,编译器会将其编译成Byte Code真正的静态方法。