Kotlin学习路(四):静态方法

本文介绍了Kotlin中模拟静态方法的四种方式:单例模式、companion object、注解@JVMStatic以及顶层方法。Kotlin本身不支持静态方法,但可以通过这些方式实现类似功能。例如,companion object提供了类内类似静态方法的调用,而添加@JVMStatic注解的方法在Java中会被编译为静态方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<本文学习郭神《第三行代码》总结>

在Java中申明静态方法,只需要加入关键字static就可以了

public class Util{
	public static void funAction(){
		print("静态方法")
	}
}

在上述代码中fun()就是一个静态方法,在调用该方法时,可以直接调用Util.funAction()。
但是在Kotlin中极度弱化了静态方法这个概念,Kotlin中并没有直接定义静态方法的关键字,但是提供了一些其他的语法支持这种特性。

1、单例模式

通过单例模式可以将上述代码就可以修改成:

object Util{
	fun funAction(){
		print("静态方法")
	}
}

这里funAction并不是静态方法,但是仍然可以通过Util.funAction()调用。

2、companion object

使用单例模式会将类中所有方法全部变成类似于静态方法的调用方式,这种方法并不能满足更多需求,所以这里使用companion object。
所以,上述代码就可以修改成:

class Util{
	fun funAction(){
		print("static fun")
	}
	companion object {
		fun funAction2() {
			print("static fun2")
		}
	}
}

这里首先要将Util改成一个普通类,funAction需要实例化才能调用,funAction2可以直接调用Util.funAction2()。
但是,这里需要注意的是,funAction2并不是静态方法,companion object这个关键字只是在Util类的内部创建了一个伴生类,funAction2方法时定义在伴生类中的实例方法。所以这里直接调用,其实是调用了Util类中伴生对象的funAction2方法。
companion object只是形式上模仿了静态方法的调用方式。

3、注解

如果在单例模式或companion object中的方法加上@JVMStatic注解,那么Kotlin编译器就将会把这些方法变成真正的静态方法。
上述代码就可以修该成:
单例模式:

object Util{
    @JvmStatic
    fun funAction(){
        print("静态方法")
    }
}

companion object:

class Util{
	fun funAction(){
		print("static fun")
	}
	companion object {
		@JvmStatic
		fun funAction2() {
			print("static fun2")
		}
	}
}	

这里需要注意的是@JvmStatic只能加载单例类或companion object中的方法上,加在其他地方,都会提示语法错误。

4、顶层方法

顶层方法指的是那些没有定义在任何类中的方法,Kotlin会将所有的顶层方法全部编译成静态方法,因此只要定义个顶层方法,那么它就一定是静态方法。
定义顶层方法,需要新创建一个名字为Object的Kotlin文件,生成一个Object.kt文件,在这个文件中定义的任何方法都会是顶层方法。
比如:

import util.*
fun doAction1 ()  {
   print("顶层方法1")
}
fun doAction2 ()  {
   print("顶层方法2")
}

调用也很简单,所有的顶层方法可以直接调用,直接在需要调用出键入方法名就可以。
这是因为在创建Object.kt文件时,Kotlin编译器会自动创建一个ObjectKt的Java类,doAction1、doAction2方法就是以静态方法的形式定义在ObjectKt类里面的。因此,如果使用Java代码的话,可以直接使用ObjectKt.doAction1()调用。如果是Kotlin代码的话,可以直接输入doAction1方法名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值