2018-11-17Kotlin入门

2018-12-09  本文已影响4人  小周爱吃瓜

kotlin 中的::表示的是引用一个另外一个函数的方法,如果有需要参数的话当然也是需要提供的了
var list = listof(1,2,3)
list.forEach(::println) 这里之所以不能省略,是因为要和this做区分.

kotlin
var:可读,可写。
val: 不是不可变的,而是表示read only,只读状态,这样的话就起到了final的功效,但是并不能表示不可变化。

const 才是表示不可变的,与final对应。并且该修饰符需要放置到顶层.

java和kotlin互相调用。

companion object {
        @JvmStatic
        var a = 1
    }
 另外的话也用于修饰kotlin中的静态方法,这样的话java能够通过类名直接进行访问.

fun test(a:Int,b:Int = 2) {

fun test(a:Int,b:Int = 2)

加入该注解之后,我们看到的效果是这样的。


起到了重载的效果

一个小小的注解,能够帮我们清除那么多冗余的代码,想想都有点小激动啊.

ps:平时要是要多存图啊,你看写到这,想发图,突然发现没有存货🤯.

-5. NoArg生成无参数的构造方法,弥补data 关键字的不足(data没有默认的额无参构造)
AllOpen 去除默认的final修饰符.


kotlin 装箱拆箱问题
kotlin和java 的装箱拆箱问题,遇到的时候就尽量规避掉,kotlin基本类型都会映射到java的类型,实现想用的话就用一个默认类去实现它.

注解处理器 :Dagger2

kotlin和java 的装箱拆箱问题,遇到的时候就尽量规避掉,kotlin基本类型都会映射到java的类型,实现想用的话就用一个默认类去实现它.

关于注解处理器。比如dagger,但是rebuild project
没有效果。

kapt
1 要用插件 kotlin-kapt
apply plugin:"kotlin-kapt"

2 rebuild 不能用,idea还没支持,所以要采用build的方式.

3 这步完成之后,你会发现还是build文件目录已经有产物了,但是我们还是无法引用,怎么办呢?
sourcesets{
main.kotlin.srcDirs+ = "build/generated/source/kapt/main"
}

完成上述步骤的操作之后就能够成功的引入我们的dagger了,关于dagger,对于做架构很有帮助,顺便提一句,而且会与使用类的生命周期进行绑定,我们也不用关心生命周期绑定,对象销毁的问题。


屏幕快照 2018-12-09 下午12.16.10.png
上一篇下一篇

猜你喜欢

热点阅读