怎么研究
- Kotlin和Java都是运行在JVM上,然则实际上JVM并不熟悉Java和Kotlin,因为它只和bytecode(即class文件)打交道。
- 因而经由过程研究bytecode,我们是可以懂得Kotlin的一些深刻道理的
- 因为同一份bytecode反编译成java和kotlin文件是等价的,所以将kotlin编译后的class文件反编译成Java,也是具有参考和研究价值的。
实践办法有哪些
- 应用Kotlin插件
- 应用kotlinc,javap等对象
一些实践
Null Safe Operator实现道理
在Java中,我们经常会碰到空指针的问题,Kotlin特意增长了一个空指针安然操作符?。应用起来如下
- fun testNullSafeOperator(string: String?) {
- System.out.println(string?.toCharArray()?.getOrNull(10)?.hashCode())
- }
当我们进行如许的调用时
- testNullSafeOperator(null)
- testNullSafeOperator("12345678901")
- testNullSafeOperator("123")
获得的输出结不雅为
- null
- 49
- null
大年夜结不雅可见,并没有像Java那样抛出NullPointerException,而是碰到空指针则不持续履行了。
那么Kotlin的┞封个空指针安然操作符是若何工作的呢,我们可以借助IntelliJ IDE的Kotlin插件来帮助我们研究,步调如下
- 应用IntelliJ IDE打开一个待研究的Kotlin文件(需确保Kotlin插件已安装)
- 按照下图依次点击至Show Kotlin Bytecode

- 膳绫擎的步调操作后,会获得如许的bytecode
- // access flags 0x19
- public final static testNullSafeOperator(Ljava/lang/String;)V
- @Lorg/jetbrains/annotations/Nullable;() // invisible, parameter 0
- L0
- LINENUMBER 11 L0
- GETSTATIC java/lang/System.out : Ljava/io/PrintStream;
- ALOAD 0
- DUP
- IFNULL L1 //对string字符串判空
- INVOKESTATIC kotlin/text/StringsKt.toCharArray (Ljava/lang/String;)[C
- DUP
- IFNULL L1 //对CharArray判空
- BIPUSH 10
- INVOKESTATIC kotlin/collections/ArraysKt.getOrNull ([CI)Ljava/lang/Character;
- DUP
- IFNULL L1 //对Char判空
- INVOKEVIRTUAL java/lang/Object.hashCode ()I
- INVOKESTATIC java/lang/
推荐阅读
是以,它会让人想起残差前馈收集(residual feed-forward network),但在实际中,强迫这些收集向前传播误差并不克不及让它们在更高财揭捉?习到有效的层次表征。是以,它们不克不及基于更>>>详细阅读
本文标题:研究学习Kotlin的一些方法
地址:http://www.17bianji.com/lsqh/35131.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示