汕头网站优化系统,沈阳网站推广公司排名,wps做网站框架,国内永久免费crm系统破解点击跳转Unity3D特效百例点击跳转案例项目实战源码点击跳转游戏脚本-辅助自动化点击跳转Android控件全解手册点击跳转Scratch编程案例点击跳转软考全系列
#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧#xff0c;以及各种资源分享Unity3D特效百例点击跳转案例项目实战源码点击跳转游戏脚本-辅助自动化点击跳转Android控件全解手册点击跳转Scratch编程案例点击跳转软考全系列
关于作者 专注于Android/Unity和各种游戏开发技巧以及各种资源分享网站、工具、素材、源码、游戏等 有什么需要欢迎底部卡片私我交流让学习不再孤单。 实践过程
在 Java 中使用静态方法或者静态变量我们直接使用 static 进行静态修饰即可。调用起来不论是 Java 调用还是 Kotlin 调用方式一样都很方便类名.方法名 即可。 但是在 Kotlin 中使用静态的方式可就不止一种有三四种呢而且不同的方式在 Java 中引用使用方式还不同。具体采用哪种方式还需要自己根据场景选择了~
静态方式
关于静态变量、常量、函数方法在Kotlin的使用主要有以下几种形式Object、companion object、顶层方法、 JvmStatic注解、JvmField注解等
单例 Object
使用 Object 关键字修饰class类 该方式主要用到了 Kt 单例方面的知识 该方式所修饰的类可以看做静态类内部方法均为静态方法(定制性弱了一点) 同时在 Kt 中还可以用 open、data、internal
object MyStatic {fun myFun(){}
}//Kotlin中调用
MyStatic.myFun()
//Java中调用
MyStatic.INSTANCE.myFun();伴生 companion object
伴随对象通常声明单例方式也是最常用的方式之一。 使用 companion object 包裹方法只有在该作用域内的方法方为静态方法。 调用 companion object 修饰时原理是内部维护了一个伴生类伴随真不是白叫的内部维护了静态内部类来模拟static特性。 不支持 Java 直接调用 Kt 方法
class MyStaticTwo {companion object {fun myFun() {}}
}//Kotlin中调用
MyStaticTwo.myFun()
//Java中调用
MyStaticTwo.Companion.myFun();顶层类 顶层方法
顶层方法是指那些没有定义在任何类中的方法Kotlin编译器会将所有顶层方法编译成静态方法这已经脱离了Java范围 该方式调用静态方法时无需通过 类名.方法可直接调用方法。支持 Java 直接调用 Kt 方法
顶层方法常用在扩展函数、扩展属性场景
创建kt文件后直接在里面写方法。
package cn.jucheng.datafactoryappfun myFun(){
}
//Kotlin中调用
myFun() //直接调用方法即可
//Java中调用
MyStaticKt.myFun(); //可以通过【文件名Kt】的形式调用出来。 我创建的文件名是 MyStatic 注解 JvmStatic、JvmField支持 Java 调 Kt
我们使用 JvmStatic 注解静态方法使用JvmField 注解静态参数变量、常量
原始 object 方式并 不支持在Java通过静态方式直接调用Kt静态方法需要在方法上加 JvmStatic 才能支持直接调用 只能写在 object 修饰的类或者 companion object 里写法虽然有些别扭但是效果是真的是按 static 来实现的
object MyStatic {JvmFieldvar myName 芝麻粒儿JvmStaticfun myFun() {}
}class MyStaticTwo {JvmFieldvar myName 芝麻粒儿 //这种情况无法知己诶访问companion object {JvmFieldvar myNameTwo 芝麻粒儿 JvmStaticfun myFun() {}}
}
//Java中调用
MyStatic.myName;
MyStatic.myFun();
MyStaticTwo.myName; //报错 无法调用
MyStaticTwo.myNameTwo;
MyStaticTwo.myFun();//Kotlin中调用
MyStatic.myName
MyStatic.myFun()
MyStaticTwo.myNameTwo
MyStaticTwo.myName //同样无法直接调用
MyStaticTwo.myFun()反编译后可以看出这种形式是比较贴合我们常用的Java形式的。建议JvmField修饰变量 JvmStatic修饰函数方法。如果他们反过来使用虽然不报错但是反编译后会发现里面代码多了一层处理。
静态常量 const
在使用const前我们要了解 var、val 修饰变量的区别var 可变变量可更改、val 只读变量不可更改 注意 const 仅支持 val 只读变量 的形式包内唯一性脱离类的束缚这是kotlin的特性不能和 JvmField 混用 const 关键字的作用域 一般有三种地方顶层方法、object 、companion object 我们写代码通常应该有个单独的object的类里面放置的是所有的const修饰的常量当然如果过多也可以分多个object类。 在 Java 中可以直接调用 从上面我们可以看出静态变量是定义在类公有属性中和Java中定义一模一样我们在Java中定义常量也是使用 final 关键字。但 const 有两个限制
值必须是常量后续不可更改必须是基本的包装类型
将 Kotlin 编译成 Java
我们都知道 kotlin 最终还是要编译成 java class 在 JVM 上运行的有时我们的确是想看看用 kotlin 写完的代码编译完了到底啥样子这样有助于我们理解 kotlin 语法 比如现在想要查看具体的 Kotlin 不同静态方法具体的 Java 实现。我们直接使用 Android Studio 提供的工具即可。
在窗口中找到 Tools-Kotlin-Show Kotlin Bytecode 打开窗口然后点击 Decompile 进行反编译即可。 快去试试吧。
其他 作者小空和小芝中的小空 转载说明-务必注明来源https://zhima.blog.csdn.net/ 这位道友请留步☁️我观你气度不凡谈吐间隐隐有王者霸气日后定有一番大作为旁边有点赞收藏今日传你点了吧未来你成功☀️我分文不取若不成功⚡️也好回来找我。 温馨提示点击下方卡片获取更多意想不到的资源。