Kotlin:静态方法

发布于:2021-10-27 02:17:51

静态方法在其他高级语言(如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注释。

相关推荐

最新更新

猜你喜欢