【Kotlin】静态方法

Kotlin 却极度弱化了静态方法这个概念,非常推荐使用单例类的方式来实现。

kt 复制代码
object Util {
    fun doAction() {
		println("do action") 
	}
}

虽然这里的doAction()方法并不是静态方法,但是我们仍然可以使用Util.doAction()的方式来调用,这就是单例类所带来的便利性。

不过,使用单例类的写法会将整个类中的所有方法全部变成类似于静态方法的调用方式。

如果我们只是希望让类中的某一个方法变成静态方法的调用方式该怎么办呢?这个时候就可以使用刚刚在最佳实践环节用到的companion object了。

kt 复制代码
class Util {
    fun doAction1() {
		println("do action1") 
	}
	companion object {
	    fun doAction2() {
			println("do action2") 
		}
	} 
}

不过,doAction2()方法其实也并不是静态方法,companion object这个关键字实际上会在Util类的内部创建一个伴生类,而doAction2()方法就是定义在这个伴生类里面的实例方法。只是Kotlin 会保证Util类始终只会存在一个伴生类对象,因此,调用Util.doAction2()方法,实际上就是调用了Util类中伴生对象的doAction2()方法。

由此可以看出,Kotlin 确实没有直接定义静态方法的关键字,但是提供了一些语法特性来支持类似于静态方法调用的写法。

如果你确确实实需要定义真正的静态方法,

注解

kt 复制代码
companion object {
	@JvmStatic
	fun doAction2() {
		println("do action2")
	}
}

顶层方法

首先,需要创建一个Kotlin 文件。对着任意包名右击 → New → Kotlin File/Class ,在弹出的对话框中输入文件名即可。注意创建类型要选择File。

kt 复制代码
fun doSomething() {
	println("do something") 
}

Kotlin 编译器会将所有的顶层方法全部编译成静态方法。

所有的顶层方法都可以在任何位置被直接调用,不用管包名路径,也不用创建实例,直接键入doSomething()即可。

相关推荐
tangweiguo0305198714 小时前
Kable使用指南:Android BLE开发的现代化解决方案
android·kotlin
yzpyzp21 小时前
kotlin的函数前面增加suspend关键字的作用
android·开发语言·kotlin
jiet_h21 小时前
Android Kotlin ObjectAnimator 和 ValueAnimator 全面解析
android·开发语言·kotlin
Android技术之家21 小时前
Kotlin与Compose:Android开发的现代化变革
android·java·开发语言·kotlin
小孔龙1 天前
01.Kotlin Serialization - 基础用法
kotlin·json
叽哥1 天前
Kotlin学习第 5 课:Kotlin 面向对象编程:类、对象与继承
android·java·kotlin
叽哥1 天前
Kotlin学习第 6 课:Kotlin 集合框架:操作数据的核心工具
android·java·kotlin
前行的小黑炭1 天前
Android LayoutInflater 是什么?XML到View的过程
android·java·kotlin
前行的小黑炭2 天前
Android :如何提升代码的扩展性,方便复制到其他项目不会粘合太多逻辑,增强你的实战经验。
android·java·kotlin
珠峰下的沙砾2 天前
在kotlin中如何使用像java中的static
kotlin