Kotlin 靜態類,靜態方法

  • 整個靜態類
object StaticUtil{
    fun method()
    ...
}
  • 類中的部分靜態方法
class StaticUtils {
    companion object {// 包裹範圍內 屬於靜態方法
        fun method()
        ...
    }
}
  • 全局靜態
    直接新建一個 Kotlin file 然後定義一些常量,方法
val staticString = "這裏也是全局靜態字符串"

fun startIntent(context: Context, clazz: Class<*>, bundle: Bundle?) {
    val intent = Intent()
    intent.setClass(context, clazz)
    if (bundle != null) {
        intent.putExtras(bundle)
    }
    context.startActivity(intent)
}

補充
我們平時寫代碼是肯定會有各種類型的工具類,比如:UserUtil, IntentUtil , DialogUtil … 等等,
那麼在 Java 中,我們是這麼寫的:

class UserUtil{

    public static void XXX(){
        ···
    }

}

這種寫法轉換成 Kotlin 版本的可能是這樣的:

object UserUtil{
    fun XXX(){
    }
}

也可能是這樣的:

class UserUtil{
    companion object {
        fun XXX(){
        }
    }
}

那麼不管上面的 Java 版本,還是 Kotlin 版本,最終的調用方法都還是一樣的:

UserUtil.XXX()

我們上面說到了一個 全局靜態 的寫法,那麼,其實我們在項目中寫工具類時,完全可以用到這種寫法,比如,
新建一個 name 爲 : UserUtil 的 Kotlin file,也就是 .kt 文件,然後,直接寫出我們上面工具類中的方法:

fun XXX(){
}

這種寫法的好處就是,你在項目中根本不需要再去使用 UserUtil 類名去調用。

可能有人會問,這種直接寫在 kt 文件中,和寫在 class UserUtil 類中有什麼區別,如果你能去看一下編譯代碼,你就知道了,其實都是一樣的,編譯結果跟 Java 靜態工具類的寫法沒什麼區別,你要非說區別的話,那就是 類 和 方法 都多了一個 final 修飾符。。
另外就是,因爲不用通過類名去調用方法了,所以,你自己要規範好寫的靜態方法名稱,因爲一旦方法或者 kt 文件過多的話, 就有可能會搞混亂。這點也是需要各位自己注意的。
至於項目中如何去用這幾種寫靜態類的方法,就看各位的喜好了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章