kotlinTouchHelperDemo
给各位客官奉上Github地址:
https://github.com/Nichooool/kotlinTouchHelperDemo
简书地址: http://www.jianshu.com/p/2e591df06d73
其实在一个月前就想写个kotlin的Demo,想在kotlin成为Android的主流开发语言之前学习学习它.
但是中间一直没有时间,正好这几天Google I/O大会,Kotlin都上热搜了,我利用下班后的时间将写的kotlin例子来和大家分享下,让大家感受感受这门神奇的语言.
kotlin
来,先贴上官方对于这门语言的介绍以及官方为何放弃Java而最终选择kotlin
1. Kotlin 介绍
- Kotlin是一个基于JVM 实现的静态语言. Kotlin是IntelliJ公司创造并在持续维护这门语言.
2. 优点
- 帮你减少实现同一个功能的代码量.
- 让你的代码更容易阅读,同时易于理解.
- 移除了你可能会犯错误的功能.
- 基于 JVM 和 Javascript,你可以在很多地方运行.
- Kotlin 和 Java 可以相互调用 .
3. 为何放弃Java
- 兼容性问题 (Java 7 只支持 API 19 及以上,以及AndroidStudio对于Java 8的新特性支持迟迟没有完善)
- Java 存在问题
a. 空引用 : 不论你费多大的功夫,你都无法避免它.因为 Java 的类型系统就是不安全的 .
b. 原始类型 : 我们在开发的时候总是会为了保持兼容性而卡在范型原始类型的问题上,我们都知道要努力避免 raw type 的警告,但是它们毕竟是在语言层面上的存在,这必定会造成误解和不安全因素.
c. 协变数组 : 你可以创建一个 string 类型的数组和一个 object 型的数组,然后把 string 数组分配给 object 数组.这样的代码可以通过编译,但是一旦你尝试在运行时分配一个数给那个数组的时候,他就会在运行时抛出异常.
d. Java 8 存在高阶方法 : 但是他们是通过 SAM 类型 实现的.SAM 是一个单个抽象方法,每个函数类型都需要一个对应的接口.如果你想要创建一个并不存在的 lambda 的时候或者不存着对应的函数类型的时候,
你要自己去创建函数类型作为接口.
e. 泛型中的通配符 : 诡异的泛型总是难以操作,难以阅读,书写,以及理解. 对编译器而言,异常检查也变得很困难.
- 为何选择Kotlin
- 对于上面Java存在的问题 很好的解决了.
- 添加新特性
a. Lambda 表达式 (Java8 才有)
b. 数据类
c. 函数字面量和内联函数
d. 函数扩展
e. 空安全
f. 智能转换
g. 字符串模板
h. 类委托
i. 类型推断