- 静态方法:在某些编程语言中又叫做类方法,指的就是不需要创建实例就可以直接调用的方法,几乎所有的编程语言都会支持静态方法的。
在JAVA中,定义静态方法很简单,只需要static关键字:
public class Util {
static void doSomething(){
//doSomething
}
}
可以看到很方便吧,但是在Kotlin中却极度的弱化了静态方法这个概念,Kotlin提供了比静态方法更好用的特性:单例,在Kotlin中使用单例很简单,使用object修饰就好了:
object Util {
fun doSomething() {
//doSomething
}
}
这里的doSomething并不是静态方法,但是我们仍然可以用Util.doSomething的方式来调用,这就是单例类带来的便利性。但是这样写的话整个类的方法都可以通过类名来访问了,如果只希望该类中的某一个方法变成类名访问的话,要用companing object:
class Util {
fun doSomething1() {}
companion object {
fun doSomething2() {
//doSomething
}
}
}
这样的话,只有doSomething2这个函数可以通过Util类名来访问了,刚才说过,其实这并不是静态方法,companing object这个关键字会在Util类内部创建一个伴生类,doSomething2就是定义在这个伴生类中的,但是Kotlin保证了一个类有且只能有一个伴生类对象。
但是如果你确确实实的想要定义真正的静态方法的话,Kotlin提供了两种方法:注解和顶层方法
- 注解:@JvmStatic
class Util {
fun doSomething1() {}
companion object {
@JvmStatic
fun doSomething2() {
//doSomething
}
}
}
@JvmStatic注解只能加在单例类或companion object中的方法上!
- 顶层方法:指的是那些没有定义在任何类中的方法,只要是顶层方法,就一定是静态方法