- 整個靜態類:
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 文件過多的話, 就有可能會搞混亂。這點也是需要各位自己注意的。
至於項目中如何去用這幾種寫靜態類的方法,就看各位的喜好了。