学习kotlin最好的办法就是究其本质,那么多语法糖,为什么这样写,我们需要看它最终实现是什么样的,这样才能全面的认识,并深刻的理解kotlin这门语言。
本文内容来自《Kotlin从小白到大牛》-关东升 《kotlin_for_android_developers》-中文译版
在这里不是很理解这个kotlin运行时库的作用,如果说前面kotlin编译器已经将.kt文件编译成了.class文件,为什么不能由java虚拟机直接解释执行呢,为什么在里面又加了一个kotlin运行时库呢。要了解这个问题的答案,需要探究一下编译生成的kotin字节码和java字节码的区别,暂时姑且把他当做和java字节码一样的东西。
有了这个前提,我们再来看一些kotlin的特性,就可以更好的理解为什么是这样:
1.扩展函数:
本质是静态函数
2.伴生对象: kotlin中没有static关键字,所以用companion object统一声明静态相关的东西:
3.委托
4.内联函数
5.中缀运算符
6.延迟初始化
7.惰性加载
8.内部类 使用inner关键字,相当于java的内部类 如果不适用inner关键字,kotlin中叫嵌套类,相当于java的静态内部类(static class)
思考:为什么有内部类这种东西,内部类是如何访问外部成员变量的?
关于面试题的比较全面的文章: