静态方法在其他高级语言(如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注释。
————————————————
版权声明:本文为CSDN博主「强强爱学习」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42708161/article/details/107441705

Kotlin:静态方法相关推荐

  1. Kotlin - 静态方法

    在Java中定义一个静态方法非常之简单,只需要在方法上声明一个static关键字就可以了: public class Util {public static void doAction(){Syste ...

  2. Kotlin静态方法定义和调用

    在习惯java的开发之后,使用kotlin进行编码,总有那么些不自然. 静态类的定义: 全局静态(实际上是单例模型) 直接将类声明为object,那么所有的函数也就静态的了,这种一般适用于各种util ...

  3. React Native Android 从学车到补胎和成功发车经历,kotlin静态方法

    | ±-- com.facebook.fresco:fbcore:0.11.0 | - com.facebook.fresco:imagepipeline-base:0.11.0 | ±-- com. ...

  4. 用生命周期规范组件化流程

    写在前面 1. 组件划分 架构 宿主壳.调试壳 组件层 基础层 MVC.MVP.MVVM 如何下沉 Utils 规范:使用 Kotlin 静态方法 单例模式 res 规范:命名清晰 string.xm ...

  5. Kotlin中的Java静态方法等效于什么?

    本文翻译自:What is the equivalent of Java static methods in Kotlin? There is no static keyword in Kotlin. ...

  6. kotlin调用类中的方法_一种轻松的方法来测试Kotlin中令人沮丧的静态方法调用

    kotlin调用类中的方法 by Oleksii Fedorov 通过Oleksii Fedorov 一种轻松的方法来测试Kotlin中令人沮丧的静态方法调用 (A stress-free way t ...

  7. Kotlin定义静态变量、静态方法

    Kotlin定义静态变量.静态方法 kotlin定义静态变量.方法可以采用伴生对象companion object的方式. 经典例子,实例化Fragment. java写法: public class ...

  8. Kotlin 静态类,静态方法

    整个静态类: object StaticUtil{fun method()... } 类中的部分静态方法 class StaticUtils {companion object {// 包裹范围内 属 ...

  9. kotlin实现静态类和静态方法

    kotlin中,声明静态类的方法很简单: /*** 类名前的class替换成object,为静态类,此类下的所有对象和函数,都是静态,* 所有方法都为静态方法,如工具类.常量池.*/ object L ...

最新文章

  1. asp.net文件上传下载的简单实现
  2. ITOO4.1之缓存—分布式缓存Memcached学习(理论篇)
  3. 近世代数--群同构--第三同构定理
  4. python Tags 母板 组件 静态文件相关 自定义simpletag inclusion_tag
  5. 今天专攻POWERSHELL获取本机CPU,内存消耗
  6. 谷歌修复 Chrome 站点隔离绕过漏洞
  7. 2019 必看 Android 高级面试题总结
  8. Atitit.redis操作总结
  9. ajax双子星,荷兰双子星德里赫特和德容哪个厉害
  10. IDEA字体设置详解
  11. 基于CUDA的医学影像数据处理工作站的配置方法
  12. 仿真通过AXI_lite接口读写寄存器时axi_awready信号无法拉高的一种原因
  13. Linux之systemctl命令基本使用
  14. 安装npm和cnpm
  15. 欧拉筛法原理C语言,素数筛法
  16. Android 集成科大讯飞语音听写功能
  17. solidworks重建模型好慢_SolidWorks2019启动打开超级慢太慢好几分钟怎么解决?溪风老师支招啦...
  18. 金蝶EAS客户端配置更换
  19. matlab网页视频流,MATLAB - 捕获视频流(MJPEG,rtsp,mpeg)
  20. EPON设备技术特性

热门文章

  1. MySQL的几种数据库引擎介绍
  2. 无法连接局域网中的sqlserver数据库
  3. 蜡笔小新经典话语---注意其语义的规则
  4. android apk旋转,[RK3288][Android6.0] Apk设置显示旋转过程小结
  5. 将PHP项目部署到服务器
  6. python小猴子摘桃子的故事_基于Python-Pycharm实现的猴子摘桃小游戏(源代码)
  7. android镜像分析
  8. html的碰撞事件,js实现碰撞检测
  9. 艾美捷热转移稳定性检测试剂盒:简单、灵敏、均匀的荧光测定法
  10. freeswitch cdr odbc