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真正的静态方法。

 

文哥博客(https://wenge365.com)属于文野个人博客,欢迎浏览使用

联系方式:qq:52292959 邮箱:52292959@qq.com

备案号:粤ICP备18108585号 友情链接