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 文件过多的话, 就有可能会搞混乱。这点也是需要各位自己注意的。
至于项目中如何去用这几种写静态类的方法,就看各位的喜好了。

推荐阅读更多精彩内容