Getting started with Kotlin on Android

简介: Kotlin是一门与Swift类似的静态类型JVM语言,由JetBrain设计开发并开源,与Java相比,Kotlin的语法更简洁,更具表达性,而且提供了更多的特性。两位ThoughtWorks高级咨询师共同为我们分享Kotlin在Android上的运用。阅读字数: 1128 用时: 7分钟

kotlin_android

2017年3月26日,ThoughtWorks高级咨询师张帅、王智勇在“Mobile Open Day—小步构建移动开发知识网络”进行《Getting started with Kotlin on Android》演讲分享。IT大咖说作为独家视频合作方,经主办方和讲者审阅授权发布。

_
_
嘉宾分享视频地址:http://t.cn/RKwZwbZ

Java VS Kotlin

在Java的使用中会遇到很多问题。它的语法繁琐,API低级;随时可能出现null pointer问题;有各种各样的util类和混乱的泛型。

Data Class
在Java Bean里有成员函数string topic、string type和list speakers。

Getter/Setter可以使Java成员既有封装性,又能对外暴露很多接口。

还有很多其它的方法,比如toString、hashCode和equals。
1
2

Singleton
3

而Kotlin要实现一个单例,只需一个关键字“object”。

Optional
Null pointer是代码中一个常见的bug。
4

Late-Initialized&Lazy
在代码中经常会遇到一些方法,它们不需要在构造函数中进行初始化操作,这时就可以通过lateinit var关键字把它声明成懒加载模式。

Full name是通过last name和first name组装起来的,只有用到full name的时候,才会调出lazy的这个表达式,生成一个值,非常方便,解决了懒加载的问题。

Extensions
在Java中,要想扩展一个类,我们会写一堆Utils。

而在Kotlin中,我们可以直接对double对象进行扩展,再也不需要Utils的类了。

Collections
常见的Collections有Stack、Map、Queue和List等等。

在Kotlin中把Collections分为mutable和immutable两类,这样有助于消除错误,设计更好的API。

Generics
我们要创造一个协变的应用才能引用它子类的集合,与之对应的还有逆变。

在Kotlin里数组默认不是协变的。
5

对于不可变集合是默认协变,可变集合默认是逆变的。

总结一下
Kotlin提供了高级的语法,例如data、object等。

对于null pointer问题,它有optional对象。

有val、late-intialized、lazy和Collections支持。

可以用扩展语法让代码更加可读。

Generics简单好用。

Kotlin cool feature

Inline function
如果在开发过程中发现有性能问题,可以把代码进行优化,在代码运行起来之后,body block会被封装成一个函数对象。加入了Inline,body就会被Inline到函数调用的地方去。

Inline还有个功能叫reified。当我们读取网络返回的时候,会用Gson来解析字符串,在写的过程中会发现语法有冗余。引入reified以后,可以把类型声明成reified,这样在函数题里就会引用到这个类型具体的Class。Kotlin有一定的类型推导功能。

Sealed Class
SealedClass可以限制住一个副类一共有多少个子类。

Delegated properties
对于一个property,可以把它Delegated一个对象上,每当读写property的时候,它都会调用对应的函数。

Coroutines
6
Coroutines把回调式的写法改成了流式的写法。

总结一下
Inline function减少了运行的开销。
SeadledClass限制了类的层级。
Delegate使得代码更加简洁。
Coroutines提高了异步代码的可读性。

Kotlin in Android

在Android上有一个常见的类叫做viewholder。
7

Kotlin在Android上可以自动把view找出来,不需要手写代码。

Kotlin's Reference

引入Kotlin
8

已知问题
Kotlin与mockito的兼容性。
在Kotlin里的静态代码检查工具还不完善。
Kotlin对于Java里的一些关键词和操作符的语义做了改变。

以上是我今天分享的内容,感谢聆听!

福利赠票!

IT大咖说作为7月24日OpenStack Days China大会(在北京国家会议中心举行)的官方现场直播合作伙伴,特为小伙伴们争取了少量免费VIP票福利(原价¥600)!

获取方式:

扫码加这位小姐姐微信(或加微信号:ITDKS666),她会告诉你咋整!(备注:openstack)
__20170710103228
_

目录
相关文章
|
9月前
|
XML Java 编译器
[Android JNI] --- Java和Android简介
[Android JNI] --- Java和Android简介
83 1
|
11月前
|
Android开发 Kotlin
Android基础--kotlin(六)
Android基础--kotlin(六)
|
11月前
|
Java Android开发 Kotlin
Android基础 --kotlin(七)
Android基础 --kotlin(七)
|
11月前
|
Java 编译器 Android开发
Android基础 -- kotlin(五)
Android基础 -- kotlin(五)
|
11月前
|
Android开发 Kotlin
Android基础--kotlin(四)
Android基础--kotlin(四)
|
11月前
|
Java C++ Kotlin
Android--kotlin基础(三)
Android--kotlin基础(三)
|
11月前
|
安全 Java 编译器
Android基础--Kotlin(二)
Android基础--Kotlin(二)
|
11月前
|
安全 前端开发 Java
Android基础--kotlin(一)
kotlin是一种在 Java虚拟机上执行的静态型别编程语言,它主要是由俄罗斯圣彼得堡的JetBrains开发团队所发展出来的编程语言。该语言有几个优势 1. 简洁 它大大减少你需要写的样板代码的数量。 2. 安全 避免空指针异常等整个类的错误。 3. 通用 构建服务器端程序、Android 应用程序或者在浏览器中运行的前端程序。 4. 互操作性 通过 100% Java 互操作性(100%兼容),可可以直接调用Java代码,可以无缝使用Java库。
|
Java Android开发 Kotlin
在Android Studio中使用Kotlin
在Android Studio中使用Kotlin
219 0
在Android Studio中使用Kotlin
|
Android开发 Kotlin
Android 开发中 Kotlin Coroutines 如何优雅地处理异常
Android 开发中 Kotlin Coroutines 如何优雅地处理异常
358 0