kotlin静态属性、静态方法
所属分类:Android | 浏览:1142 | 发布于 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真正的静态方法。