美文网首页
2018-11-17Kotlin入门

2018-11-17Kotlin入门

作者: 小周爱吃瓜 | 来源:发表于2018-12-09 11:08 被阅读4次

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

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

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

    java和kotlin互相调用。

      1. JvmField: 当java想要调用kotlin中的变量的时候,需要用@JvmField变量进行修饰。
      1. JvmStatic: 加上该注解之后 就不需要用类名.companion.getA()这种调用链冗余的方式去
        访问类,可以使用Person.getA();的方式去访问变量a.
    companion object {
            @JvmStatic
            var a = 1
        }
    
     另外的话也用于修饰kotlin中的静态方法,这样的话java能够通过类名直接进行访问.
    
      1. @JvmOverloads
        其实开发中,我们为了实现某些默认值的效果,采用的是java重载的方式,但是这种方法会让java代码看起来十分冗余,kotlint方法中可以有默认的参数,我们可以采用这种方式去轻松的实现重载,如果不加入该注解,我们看到的效果是这样的。

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

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

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


    起到了重载的效果

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

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

      1. @JvmName 可以指定kotlin编译之后的文件的名字

    -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

    相关文章

      网友评论

          本文标题:2018-11-17Kotlin入门

          本文链接:https://www.haomeiwen.com/subject/nfcifqtx.html