Kotlin:静态方法

静态方法在其他高级语言(如C++,Java)中也叫类方法。静态方法在调用时无需创建实例,通过类名.方法名的方式调用。
在java中调用静态方法的只需在声明前面加关键字static即可。而kotlin中却比较复杂,下面看看几种常见的应用场景。

工具类

工具类没有比较实例化,因此非常适合用静态方法实现。在kotlin中使用单例类实现类似的功能:

object Util{
    fun function(){
        println("这是一个工具类")
    }
}

实际上这里的function并非静态方法,但是可以用过类名.方法名的方式调用。但是,使用单例类的缺点是所有的方法必须通过类名.方法名的方式调用。

伴生类

如果我们想使一个普通类中的某些方法通过类名.方法名的方式调用,而别的方法还是正常的调用方式,可以借助伴生类,即关键字companion object

class Util2{
    fun function1(){
        println("这是一个普通的方法")
    }
    
    companion object{
        fun function2(){
            println("这是伴生类中的方法")
        }
    }
}

这里的functio1必须通过对象名.方法名的方式调用,而function2被定义在companion object中,可以通过类名.方法名的方式调用。
上述方法只是实现了类似于静态方法的特性,而并非真的静态方法。因为在java文件中以静态方法的形式调用的时候,发现这些方法都不存在的。

真正的静态函数

@JvmStatic注解

如果给单例类(object)和伴生类中(companion object)的方法加上@JvmStatic注解,就会成为真正的静态方法,在kotlin和java文件中都可以调用。
注意@JvmStatic只能加在单例类和伴生类中的对象上。如果加在一个普通方法上,就会报错。

class Util3 {
    companion object{
        
        @JvmStatic
        fun function(){
            println("这是一个真正的静态方法")
        }
    }
}

顶层方法

顶层方法是指那些没有不在类中定义的方法。编译器会自动把所有的顶层方法全部编译成静态方法。
如果在kotlin中调用顶层方法,直接使用函数名即可。
然而java是纯面向对象的,所有的方法必须都定义在类中,没有顶层方法这个概念。编译器会将定义顶层方法的kotlin文件名自动编译成一个java类,通过这个类就可以调用了。

总结:静态方法最好的使用方式是在伴生类前面加上@JvmStatic注释。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值