作家
登录

如何避免Kotlin里的陷阱?

作者: 来源: 2017-10-20 11:42:15 阅读 我要评论

from Kotlin 
  • consumeText("foo", Consumer { 
  •     println(it) 
  • }) 
  • // usage from Java 
  • consumeText("foo", System.out::println); 
  • Java 中应用弗成变集合

    1. fun createSet(): Set<String> = setOf("foo"
    2. // ... 
    3. createSet().add("bar") // oops, compile error 

    这是一个很好的弥补。然则当你在看 Java JDK 的 Set 类 API 的时刻会发明:

    1. createSet().add("bar"); // UnsupportedOperationException 

    当你测验测验修改┞封个 Set 的时刻,就会抛出这个异常,就像你应用了Collections.unmodifiableSet() 办法一样。我不知道这种情况是否合理,然则你在应用 Kotlin 弗成变版本的 Java 集合类的时刻,须要谨记这一点。

    接口中没有重载

    Kotlin 在接口上不支撑应用 @JvmOverloads 注解,当然 override 也不可。

    1. interface Foo { 
    2.     @JvmOverloads // OUCH! 
    3.     fun bar(qux: String) 
    4. class FooImpl : Foo { 
    5.  
    6.     @JvmOverloads // YIKES! 
    7.     override fun bar(qux: String) { 
    8.     } 

    你只能像下面如许手动定义:

    1. interface Foo { 
    2.     fun bar() 
    3.     fun bar(qux: String) 

    要记住你可以应用 Kotlin 中的 KEEP (Kotlin Evolution and Enhancement Process) 来改良。KEEP 与 Java 中的 JEP 类似,然则与 JEP 比拟要简洁很多。

    总结

    Kotlin 现下很风行,并且我也认为他是一个加强版的 Java。然则在应用 Kotlin 的时刻你仍须要保持清醒,尤其是当你身处各类各样的关于 Kotlin 的宣传之中时。如不雅你要应用 Kotlin 的话,必定要留意我们在膳绫擎提到的 Kotlin 相干的缺点。

    最后我照样想说,上述提到的问题都比较轻易解决,并且不会对说话的应用方面带来本质性的伤害。

    【编辑推荐】

    1. Kotlin和Java EE系列之—— 若何让Kotlin类对Java EE友爱
    2. 快速入门Kotlin的11招
    3. Kotlin——持续
    4. 应用Kotlin来开辟Android,这些优缺点要推敲
    5. Kotlin与Java之争 毕竟谁更好?
    【义务编辑:未丽燕 TEL:(010)68476606】

      推荐阅读

      2017 年 Python 使用情况报告,你用 2.x 还是 3.x?

    沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散!纵不雅各大年夜编程说话在 2017 年的成长情况,我们会发明 Python 的成长速度异常快。Semaphore 社区查询拜访了 Python 在>>>详细阅读


    本文标题:如何避免Kotlin里的陷阱?

    地址:http://www.17bianji.com/lsqh/38070.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)