Kotlin:静态方法
静态方法在其他高级语言(如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:静态方法相关推荐
- Kotlin - 静态方法
在Java中定义一个静态方法非常之简单,只需要在方法上声明一个static关键字就可以了: public class Util {public static void doAction(){Syste ...
- Kotlin静态方法定义和调用
在习惯java的开发之后,使用kotlin进行编码,总有那么些不自然. 静态类的定义: 全局静态(实际上是单例模型) 直接将类声明为object,那么所有的函数也就静态的了,这种一般适用于各种util ...
- React Native Android 从学车到补胎和成功发车经历,kotlin静态方法
| ±-- com.facebook.fresco:fbcore:0.11.0 | - com.facebook.fresco:imagepipeline-base:0.11.0 | ±-- com. ...
- 用生命周期规范组件化流程
写在前面 1. 组件划分 架构 宿主壳.调试壳 组件层 基础层 MVC.MVP.MVVM 如何下沉 Utils 规范:使用 Kotlin 静态方法 单例模式 res 规范:命名清晰 string.xm ...
- Kotlin中的Java静态方法等效于什么?
本文翻译自:What is the equivalent of Java static methods in Kotlin? There is no static keyword in Kotlin. ...
- kotlin调用类中的方法_一种轻松的方法来测试Kotlin中令人沮丧的静态方法调用
kotlin调用类中的方法 by Oleksii Fedorov 通过Oleksii Fedorov 一种轻松的方法来测试Kotlin中令人沮丧的静态方法调用 (A stress-free way t ...
- Kotlin定义静态变量、静态方法
Kotlin定义静态变量.静态方法 kotlin定义静态变量.方法可以采用伴生对象companion object的方式. 经典例子,实例化Fragment. java写法: public class ...
- Kotlin 静态类,静态方法
整个静态类: object StaticUtil{fun method()... } 类中的部分静态方法 class StaticUtils {companion object {// 包裹范围内 属 ...
- kotlin实现静态类和静态方法
kotlin中,声明静态类的方法很简单: /*** 类名前的class替换成object,为静态类,此类下的所有对象和函数,都是静态,* 所有方法都为静态方法,如工具类.常量池.*/ object L ...
最新文章
- asp.net文件上传下载的简单实现
- ITOO4.1之缓存—分布式缓存Memcached学习(理论篇)
- 近世代数--群同构--第三同构定理
- python Tags 母板 组件 静态文件相关 自定义simpletag inclusion_tag
- 今天专攻POWERSHELL获取本机CPU,内存消耗
- 谷歌修复 Chrome 站点隔离绕过漏洞
- 2019 必看 Android 高级面试题总结
- Atitit.redis操作总结
- ajax双子星,荷兰双子星德里赫特和德容哪个厉害
- IDEA字体设置详解
- 基于CUDA的医学影像数据处理工作站的配置方法
- 仿真通过AXI_lite接口读写寄存器时axi_awready信号无法拉高的一种原因
- Linux之systemctl命令基本使用
- 安装npm和cnpm
- 欧拉筛法原理C语言,素数筛法
- Android 集成科大讯飞语音听写功能
- solidworks重建模型好慢_SolidWorks2019启动打开超级慢太慢好几分钟怎么解决?溪风老师支招啦...
- 金蝶EAS客户端配置更换
- matlab网页视频流,MATLAB - 捕获视频流(MJPEG,rtsp,mpeg)
- EPON设备技术特性
热门文章
- MySQL的几种数据库引擎介绍
- 无法连接局域网中的sqlserver数据库
- 蜡笔小新经典话语---注意其语义的规则
- android apk旋转,[RK3288][Android6.0] Apk设置显示旋转过程小结
- 将PHP项目部署到服务器
- python小猴子摘桃子的故事_基于Python-Pycharm实现的猴子摘桃小游戏(源代码)
- android镜像分析
- html的碰撞事件,js实现碰撞检测
- 艾美捷热转移稳定性检测试剂盒:简单、灵敏、均匀的荧光测定法
- freeswitch cdr odbc