作家
登录

快速入门Kotlin的11招

作者: 来源: 2017-06-15 09:06:33 阅读 我要评论

留意到,if else 如许的语句也是表达式,这一点与 Java 不合。

Java 和 C++ 如许的说话,在构造对象的时刻经常须要用到 new 这个关键字,比如:

  1. public class Hello{ 
  2.     private String name

类似的代码在 Kotlin 傍边直译为:

  1. class Hello{ 
  2.     private var name: String? = null 

应用了可空类型,副感化就是后面每次你想要用 name 的时刻,都须要断定其是否为 null。如不雅不应用可控类型,须要加 lateinit 关键字:

  1. class Hello{ 
  2.     private lateinit var name: String 

lateinit 是用来告诉编译器,name 这个变量后续会妥当处理的。

  1. public class Hello{ 
  2.     private final String name = "Peter"

也就是说,如不雅我要想定义一个可以延迟到必定实际再应用处初始化的 final 变量,这在 Java 中是做不到的。

  1. void hello(String... names){ 
  2.     ... 

Kotlin 有办法,应用 lazy 这个 delegate 即可:

  1. class Hello{ 
  2.     private val name by lazy{ 
  3.         NameProvider.getName()  
  4.     } 

只有应用到 name 这个属性的时刻,lazy 后面的 Lambda 才会履行,name 的值才会真正计算出来。

留意 getInstance 的写法。 JvmStatic 这个注解会将 getInstance 这个办法编译成与 Java 的静态办法一样的签名,如不雅不加这个注解,Java 傍边无法像调用 Java 静态办法那样调用这个办法。

对于 final 的成员变量,Java 请求它们必须在构造办法或者构造块傍边对他们进行初始化:

11. 若何获得 class 的实例

Java 傍边:

前面我们展示了两种获得 class 的门路,一种直接用类名,一种经由过程类实例。方才接触 Kotlin 的时刻,获取 Java Class 的办法倒是轻易让仁攀困惑。

  1. class Hello  
  2. val clazz = Hello::class.java  
  3. val hello = Hello() 
  4. val clazz2 = hello.javaClass 

同样效不雅的 Kotlin 代码看上去确切很奇怪,实际上 Hello::class 拿到的是 Kotlin 的 KClass,这个是 Kotlin 的类型,如不雅想要拿到 Java 的 Class 实例,那么就须要前面的办法了。

【编辑推荐】

  1. Java异常的深刻研究与分析
  2. Java关键字volatile的懂得与精确应用 | 干货分享
  3. Kotlin函数与函数式编程浅析
  4. Kotlin和Java EE系列之—— 若何让Kotlin类对Java EE友爱
  5. JavaScript创建对象的七种方法
【义务编辑:51CTO_OS TEL:(010)68476606】

  推荐阅读

  搭载YunOS的互联网汽车 不单单只是会上网那么简单

【51CTO.com原创稿件】马云曾经说过,今天的手机因为参加了智能操作体系后,80%的手机功能似乎与打德律风、发信息这种纯真的通信没有了关系;而将来汽车参加YunOS操作体系后>>>详细阅读


本文标题:快速入门Kotlin的11招

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

关键词: 探索发现

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

网友点评
自媒体专栏

评论

热度

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