详解Kotlin中的静态变量与伴生对象的使用

显然 如果只是Kotlin调用Kotlin的情况 非常好理解,看上图 就是可以直接使用

类名.伴生对象fieldName 的形式 来直接访问一个变量。

注意val的变量是不能修改的,所以 Test.bbb 哪里直接报错了

Java调用Kotlin的场景


尝试用Java 来调用 刚才我们kotlin中的 Test类中的field

这里可以很方便的看出来,只有Test.ccc 这行代码是 符合我们java世界中使用静态变量的写法形式的

那么下面 Test.Companion 这种奇葩写法 肯定不行 还要get 啥的,一点也不符合 java 的使用习惯

我们可以看看Test这个kotlin 类的反编译结果 先看看是为啥会造成这种情况 然后再想办法解决这个问题

从上图中可以得知 const val 标记的ccc 这个变量 和java 中的 public static final 是完全 相符的

而没有使用const val 标记的field 就比较难受了, 虽然也是静态的 但是你要访问他们 必须通过

Companion 这个静态类 对象的 get set 方法来执行。

这里可以总结一下:

1.Kotlin调用Kotlin代码的情况下, 用不用const 在调用形式上都没有区别,都是 类名.fieldName的 使用方法即可

2.Java调用Kotlin代码的情况下,使用const val 标记的 field 才更加符合 java调用的形式

3.没有使用const标记的 field 在访问的时候 其实是有隐藏的调用开销的。因为毕竟使用了Companion 来做桥接,多使用了一个对象。

没有 const var的写法?


确实是没有的,const var 写法肯定是报错的,只有const val了。 哪有人就问了,那我的静态变量 就不能 是final的,所以我无法使用const val,因为我要改变他的值,这种情况怎么办?

这种情况你只要加上 注解就可以了, 在var filed 加上注解 就等于 const var的效果(这里有歧义 大家自行体会) 在val field 加上注解 就等于 const val的效果

反编译可以自己看看。

java call kotlin的情况 也可以完美使用

一般情况下,我们推荐在companion object 中尽可能多的使用jvm注解,这样不仅调用的时候效率更高(虽然可以忽略不计) 而且不管是java 调用还是kotlin调用 在形式上都更加符合使用习惯

我就想定义一个 Log Tag 或者 Intent Key 怎么这么麻烦!


最后

简历首选内推方式,速度快,效率高啊!然后可以在拉钩,boss,脉脉,大街上看看。简历上写道熟悉什么技术就一定要去熟悉它,不然被问到不会很尴尬!做过什么项目,即使项目体量不大,但也一定要熟悉实现原理!不是你负责的部分,也可以看看同事是怎么实现的,换你来做你会怎么做?做过什么,会什么是广度问题,取决于项目内容。但做过什么,达到怎样一个境界,这是深度问题,和个人学习能力和解决问题的态度有关了。大公司看深度,小公司看广度。大公司面试你会的,小公司面试他们用到的你会不会,也就是岗位匹配度。

面试过程一定要有礼貌!即使你觉得面试官不尊重你,经常打断你的讲解,或者你觉得他不如你,问的问题缺乏专业水平,你也一定要尊重他,谁叫现在是他选择你,等你拿到offer后就是你选择他了。

另外,描述问题一定要慢!不要一下子讲一大堆,慢显得你沉稳、自信,而且你还有时间反应思路接下来怎么讲更好。现在开发过多依赖ide,所以会有个弊端,当我们在面试讲解很容易不知道某个方法怎么读,这是一个硬伤…所以一定要对常见的关键性的类名、方法名、关键字读准,有些面试官不耐烦会说“你到底说的是哪个?”这时我们会容易乱了阵脚。正确的发音+沉稳的描述+好听的嗓音决对是一个加分项!

最重要的是心态!心态!心态!重要事情说三遍!面试时间很短,在短时间内对方要摸清你的底子还是比较不现实的,所以,有时也是看眼缘,这还是个看脸的时代。

希望大家都能找到合适自己满意的工作!

进阶学习视频

附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)


《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!
图片转存中…(img-AYBM90wt-1715395495016)]
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值