Kotlin字节码

        分享一个安卓小技巧:如何查看kotlin的字节码。

我们打开AS新建一个类,敲上一个变量:

package com.example.textone


class TestOne {
    var a : Int = 1

}

然后连续敲两下shift,搜索show Kotlin Bytecode会看到如下页面:

 

 我们可以看到a就是一个私有的变量,我们再定义一个b常量:

 我们可以看得到常量b是加上了final关键词的,这就是var和val的区别,我们再用const关键词定义一个c:

 我们看到会立马报错,这是因为const 只能修饰Kotlin的顶级属性(在 .kt 文件中class外声明的属性),或object对象中(object类似Java中的匿名内部类,也就是伴生对象)的属性,并且值被声明为基本类型或String,接下来我们一一解析:

 这样定义就是在class外声明的属性

 这样就是定义在伴生对象中,伴生对象相当于类的对象,可直接通过类名访问伴生对象的成员;每个类最多定义一个伴生对象;kotlin没有 static 关键字,伴生对象是为弥补kotlin没有 static 修饰的静态成员的不足。

我们再伴生对象中定义几个值:

 

 我们可以看到e报黄,编译器提示我们e应该加上const关键词,这恰恰印证了伴生对象是为弥补kotlin没有 static 修饰的静态成员的不足,我们再看看这些值的字节码:

 我们可以清晰的看到伴生对象中定义的值都被加上了static关键词,c和e还因为const关键词加上了final关键词,我们顺便回顾一下Java中static、final、static final的区别:

        static修饰的属性强调它们只有一个且可以被共享,final修饰的属性表明是一个常数(创建后不能被修改)。static final修饰的属性表示一旦给值,就不可修改,并且可以通过类名访问。(唯一、不可修改)static final也可以修饰方法,表示该方法不能重写,可以在不new对象的情况下调用。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值