美文网首页我爱编程
Kotlin开发知识(一)

Kotlin开发知识(一)

作者: AndryYu | 来源:发表于2018-08-07 13:40 被阅读0次

    1.Kotlin泛型使用

    Out(协变)

    如果你的类是将泛型作为内部方法的返回,那么可以用out。可以称其为production class/interface,因为其主要是产生(produce)指定泛型对象。

    interface Production<out T>{
          fun produce():T
    }
    
    In(逆变)

    如果你的类是将泛型对象作为函数的参数,那么可以用In。可以称其为consumer class/interface,因此其主要是消费指定泛型对象。

    interface Consumer<in T>{
           fun consume(item:T)
    }
    
    Invariant(不变)

    如果既将泛型作为函数参数,又将泛型作为函数的输出,那就既不用In或Out。

    interface  ProductionCounsumer<T>{
          fun  produce():T
          fun  comsume(item:T)
    }
    

    2.属性

    声明一个属性的完整语法是

    var <propertyName>[: <PropertyType>] [= <property_initializer>]
           [<getter>]
           [<setter>]
    

    其初始器(initializer)、getter和setter都是可选的。
    在kotlin类中不能直接声明字段。然而,当一个属性需要一个幕后字段时,kotlin会自动提供。这个幕后字段可以使用field标识符在访问器中引用

    var  counter = 0 //注意:这个初始器直接为幕后字段赋值
          set(value){
                if(value >= 0) field = value
          }
    

    3.可见性修饰符

    函数、属性和类、对象和接口可以在顶层声明,即直接在包内

    //文件名:example.kt
    package foo
    
    private fun foo() { ...... } //在example.kt内可见
    public var bar: Int = 5 //该属性随处可见
    private set                  //setter 只在example.kt内可见
    internal var baz = 6    //相同模块内可见
    
    • 如果不指定任何可见性修饰符,默认为public,这意味着你的声明将随处可见
    • 如果你声明为private,它只会在声明它的文件内可见
    • 如果你声明为internal,它会在相同模板内随处可见
    • protected不适用于顶层声明
    模板

    可见性修饰符internal意味着该成员只在相同模板内可见。更具体地说,一个模板是编译在一起的一套Kotlin文件

    4.表达式

    中缀表达式
    • 只有一个参数,且用infix修饰的函数
    class Book{
           infix fun on(place:String){ ... }
    }
    
    Book()  on  "My Desk"
    
    分支表达式
    val mode = if(args.isNotEmpty()&&args[0] == "1"){
        DEBUG
    }else{
       USER
    }
    
    when表达式
    val x = 5
    when(x){
        is Int -> println("Hello $x")
        in 1..100 -> println("$x is in 1..100")
    }
    

    相关文章

      网友评论

        本文标题:Kotlin开发知识(一)

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