[kotlin]kotlin中的伴生对象(companion object)到底是个什么东西?

写在前面

写作不易,转载注明出处:
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,两个常量:num2num4,同时定义了两个方法:test1()test2()。其中:num3num4test2()@JvmStatic修饰

第二步,转成Java代码

InterIj IDEA中的tools->Kotlin->show Kotlin Bytecode可以查看kotlin代码的字节码
kotlin字节码
然后点击字节码右上角的Decompile可以将字节码转为java代码,如图
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);</
  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值