作家
登录

在没有Kotlin的世界与Android共舞

作者: 来源: 2017-05-09 09:02:47 阅读 我要评论

在没有Kotlin的世界与Android共舞

开端投入一件事比远离它更轻易。 — Donald Rumsfeld

没有 Kotlin 的生活就像在触摸板上玩魔兽争霸 3。购买鼠标很简单,但如不雅你的新雇主不想让你在临盆中应用 Kotlin,你该怎么办?

  1. fun foo(persons: MutableList<Person>) { 
  2.     persons.filter { it.age >= 21 } 
  3.            .filter { it.name.startsWith("P") } 
  4.            .map { it.name } 
  5.            .sorted() 
  6.            .forEach(::println) 
  7. data class Person(val name: String, val age: Int

下面有一些选择。

  • 与你的产品负责人争夺获得应用 Kotlin 的权力。
  • 应用 Kotlin 并且不告诉其他人因为你知道最好的器械是只合适你的。
  • 擦掉落你的眼泪,骄傲地应用 Java。

想象一下,你在和产品负责人的斗争中掉败,作为一个专业的工程师,你不克不及在没有赞成的情况下擅自去应用那些时髦的技巧。我知道这听起来异常恐怖,特别当你已经品尝到 Kotlin 的好处时,不过不要掉去生活的信念。

在文┞仿接下来的部分,我想简短地描述一些 Kotlin 的特点,使你经由过程一些有名的对象和库,可以应用到你的 Android 里的 Java 代码中去。对于 Kotlin 和 Java 的根本熟悉是须要的。

数据类

我想你肯定已经爱好上 Kotlin 的数据类。对于你来说,获得 equals()、 hashCode()、 toString() 和 copy() 这些是很轻易的。具体来说,data 关键字还可以按照声明次序生查对应于属性的 componentN() 函数。 它们用于解构声明。

  1. data class Person(val name: String) 
  2. val (riddle) = Person("Peter"
  3. println(riddle) 

你知道什么会被打印出来吗?确切,它不会是大年夜 Person 类的 toString() 返回的值。这是解构声明的感化,它赋值大年夜 name 到 riddle。应用园括号 (riddle) 编译器知道它必须应用解构声明机制。

  1. val (riddle): String = Person("Peter").component1() 
  2. println(riddle) // prints Peter) 

这个代码没编译。它就是展示了构造声明怎么工作的。

正如你可以看到 data 关键字是一个超等有效的说话特点,所以你能做什么把它带到你的 Java 世界? 应用注释处理器并修改抽象语法树(Abstract Syntax Tree)。 如不雅你想更深刻,请浏览文┞仿末尾列出的文┞仿(Project Lombok— Trick Explained)。

应用项目 Lombok 你可以实现 data关键字所供给的几乎雷同的功能。 不幸的是,没有办法进行解构声明。

  1. import lombok.Data; 
  2. @Data class Person { 
  3.     final String name

@Data 注解生成 equals()、hashCode() 和 toString()。 此外,它为所有字段创建 getter,为所有非最终字段创建setter,并为所有必填字段(final)创建构造函数。 值得留意的是,Lombok 仅用于编译,是以库代码不会添加到您的最终的 .apk。

Lambda 表达式

Android 工程师有一个异常艰苦的生活,因为 Android 中缺乏 Java 8 的特点,并且个中之一是 lambda 表达式。 Lambda 是很棒的,因为它们为你削减了成吨的样板。 你可以在回调和流中应用它们。 在 Kotlin 中,lambda 表达式是内置的,它们看起来比它们在 Java 中看起来很多多少了。 此外,lambda 的字节码可以直接插入到调用办法的字节铝闼楝是以办法计数不会增长。 它可以应用内联函数。

  1. button.setOnClickListener { println("Hello World") } 

比来 Google 宣布在 Android 中支撑 Java 8 的特点,因为 Jack 编译器,你可以在你的代码中应用 lambda。还要说起的是,它们在 API 23 或者更低的级别都可用。

 1/4    1 2 3 4 下一页 尾页

  推荐阅读

  避免在云迁移过程中宕机

在公共云迁徙时代,IT团队须要采取谨慎的步调,以避免听到“体系宕机”这种恐怖的提示。跟着组织迁徙到基于云计算的基本举措措施,IT团队须要在迁徙过程中保持可用性。然则,推>>>详细阅读


本文标题:在没有Kotlin的世界与Android共舞

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

关键词: 探索发现

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

网友点评
自媒体专栏

评论

热度

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