Java 中应用弗成变集合
- fun createSet(): Set<String> = setOf("foo")
- // ...
- createSet().add("bar") // oops, compile error
这是一个很好的弥补。然则当你在看 Java JDK 的 Set 类 API 的时刻会发明:
- createSet().add("bar"); // UnsupportedOperationException
当你测验测验修改┞封个 Set 的时刻,就会抛出这个异常,就像你应用了Collections.unmodifiableSet() 办法一样。我不知道这种情况是否合理,然则你在应用 Kotlin 弗成变版本的 Java 集合类的时刻,须要谨记这一点。
接口中没有重载
Kotlin 在接口上不支撑应用 @JvmOverloads 注解,当然 override 也不可。
- interface Foo {
- @JvmOverloads // OUCH!
- fun bar(qux: String)
- }
- class FooImpl : Foo {
- @JvmOverloads // YIKES!
- override fun bar(qux: String) {
- }
- }
你只能像下面如许手动定义:
- interface Foo {
- fun bar()
- fun bar(qux: String)
- }
要记住你可以应用 Kotlin 中的 KEEP (Kotlin Evolution and Enhancement Process) 来改良。KEEP 与 Java 中的 JEP 类似,然则与 JEP 比拟要简洁很多。
总结
Kotlin 现下很风行,并且我也认为他是一个加强版的 Java。然则在应用 Kotlin 的时刻你仍须要保持清醒,尤其是当你身处各类各样的关于 Kotlin 的宣传之中时。如不雅你要应用 Kotlin 的话,必定要留意我们在膳绫擎提到的 Kotlin 相干的缺点。
最后我照样想说,上述提到的问题都比较轻易解决,并且不会对说话的应用方面带来本质性的伤害。
【编辑推荐】
- Kotlin和Java EE系列之—— 若何让Kotlin类对Java EE友爱
- 快速入门Kotlin的11招
- Kotlin——持续
- 应用Kotlin来开辟Android,这些优缺点要推敲
- Kotlin与Java之争 毕竟谁更好?
推荐阅读
2017 年 Python 使用情况报告,你用 2.x 还是 3.x?
沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散!纵不雅各大年夜编程说话在 2017 年的成长情况,我们会发明 Python 的成长速度异常快。Semaphore 社区查询拜访了 Python 在>>>详细阅读
本文标题:如何避免Kotlin里的陷阱?
地址:http://www.17bianji.com/lsqh/38070.html
1/2 1