可以在类的某个方法前面添加:companion object,这样的话实际上Kotlin会为你创建一个伴生的类,而且只能创建这么一个,这样这个方法就可以象静态方法那样直接调用了。来看看下面的代码:
/**
* You can edit, run, and share this code.
* play.kotlinlang.org
*/
fun main() {
println("Beginning:Hello, world!!!")
//Util.doAction1()
Util.doAction2()
}
class Util{
fun doAction1(){
println("do Action1")
}
companion object{
fun doAction2(){
println("do Action2")
}
}
}
doAction1()是普通的方法,是不可以直接用Util.doAction1() 这样调用的,运行不了地。
doAction2()放在了companion object这个类中,它就可以像静态方法那样调用了:Util.doAction2()是可以运行的。
但是使用companion object这种方式并不是真正的静态方法。
真正的静态方法的办法是:使用注解和顶层方法。
注解就是添加:@JvmStatic 在方法的前面 ,这个@JvmStatic注解只能用在单例类或者companion object之中。
/**
* You can edit, run, and share this code.
* play.kotlinlang.org
*/
fun main() {
println("Beginning:Hello, world!!!")
//Util.doAction1()
Util.doAction2()
}
class Util{
fun doAction1(){
println("do Action1")
}
companion object{
@JvmStatic//用了这个注解,我就是纯粹的静态方法了
fun doAction2(){
println("do Action2")
}
}
}
顶层方法:就是那些没有定义在任何类中的方法。首先创建个kotlin文件,把方法直接写在里面,然后就可以到处使用了。这个创建文件似乎在这个在线的play.kotlin.org 中也做不成,就不演示了。可以理解为就是我们学过的最朴实的一个函数,C语言当中的函数,没有类,直接写,然后就可以到处使用了,因为它们是顶层方法。