文章目录
写在前面
写作不易,转载注明出处:
https://blog.csdn.net/qq_34676644/article/details/119178392
或者我同步更新的简书博客:
https://www.jianshu.com/p/ddfed1df606c
相信初学
kotlin
的人,对与kotlin
中的companion object
会有疑惑,也有不少人将这个东西当作java
的静态来使用,今天就来扒一扒到底什么是companion object
话不多说,直接上例子,注:以下测试基于kotlin 211-1.4.32-release-IJ7628.19
版本
第一步,写出kotlin代码
class SingleInstance {
companion object {
var num1 = 10
val num2 = 11
@JvmStatic
var num3 = 12
@JvmStatic
val num4 = 13
fun test1() {
println("test1")
}
@JvmStatic
fun test2() {
println("test2")
}
}
}
在companion object
中定义了2个变量:num1
和num3
,两个常量:num2
,num4
,同时定义了两个方法:test1()
和test2()
。其中:num3
、num4
和test2()
用@JvmStatic
修饰
第二步,转成Java代码
在InterIj IDEA
中的tools
->Kotlin
->show Kotlin Bytecode
可以查看kotlin代码的字节码
然后点击字节码右上角的Decompile
可以将字节码转为java
代码,如图
第三步,查看java代码
public final class SingleInstance {
private static int num1 = 10;
private static final int num2 = 11;
private static int num3 = 12;
private static final int num4 = 13;
@NotNull
public static final SingleInstance.Companion Companion = new SingleInstance.Companion((DefaultConstructorMarker)null);</