留意到,if else 如许的语句也是表达式,这一点与 Java 不合。
Java 和 C++ 如许的说话,在构造对象的时刻经常须要用到 new 这个关键字,比如:
- public class Hello{
- private String name;
- }
类似的代码在 Kotlin 傍边直译为:
- class Hello{
- private var name: String? = null
- }
应用了可空类型,副感化就是后面每次你想要用 name 的时刻,都须要断定其是否为 null。如不雅不应用可控类型,须要加 lateinit 关键字:
- class Hello{
- private lateinit var name: String
- }
lateinit 是用来告诉编译器,name 这个变量后续会妥当处理的。
- public class Hello{
- private final String name = "Peter";
- }
也就是说,如不雅我要想定义一个可以延迟到必定实际再应用处初始化的 final 变量,这在 Java 中是做不到的。
- void hello(String... names){
- ...
- }
Kotlin 有办法,应用 lazy 这个 delegate 即可:
- class Hello{
- private val name by lazy{
- NameProvider.getName()
- }
- }
只有应用到 name 这个属性的时刻,lazy 后面的 Lambda 才会履行,name 的值才会真正计算出来。
留意 getInstance 的写法。 JvmStatic 这个注解会将 getInstance 这个办法编译成与 Java 的静态办法一样的签名,如不雅不加这个注解,Java 傍边无法像调用 Java 静态办法那样调用这个办法。
对于 final 的成员变量,Java 请求它们必须在构造办法或者构造块傍边对他们进行初始化:
11. 若何获得 class 的实例
Java 傍边:
前面我们展示了两种获得 class 的门路,一种直接用类名,一种经由过程类实例。方才接触 Kotlin 的时刻,获取 Java Class 的办法倒是轻易让仁攀困惑。
- class Hello
- val clazz = Hello::class.java
- val hello = Hello()
- val clazz2 = hello.javaClass
同样效不雅的 Kotlin 代码看上去确切很奇怪,实际上 Hello::class 拿到的是 Kotlin 的 KClass,这个是 Kotlin 的类型,如不雅想要拿到 Java 的 Class 实例,那么就须要前面的办法了。
【编辑推荐】
- Java异常的深刻研究与分析
- Java关键字volatile的懂得与精确应用 | 干货分享
- Kotlin函数与函数式编程浅析
- Kotlin和Java EE系列之—— 若何让Kotlin类对Java EE友爱
- JavaScript创建对象的七种方法
推荐阅读
【51CTO.com原创稿件】马云曾经说过,今天的手机因为参加了智能操作体系后,80%的手机功能似乎与打德律风、发信息这种纯真的通信没有了关系;而将来汽车参加YunOS操作体系后>>>详细阅读
本文标题:快速入门Kotlin的11招
地址:http://www.17bianji.com/lsqh/35779.html
1/2 1

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