关键字组合详解

关键字(lateinit)详解

lateinit(延迟初始化)

延迟初始化属性:Kotlin要求非空类型的属性必须要在构造方法中进行初始化。有时这种要求不太方便,比如可以通过依赖注入或是单元测试情况下进行属性的赋值。

通过lateinit关键字满足以下条件

  • lateinit只能用在类体中声明的var属性上,不能用在primary constructor声明的属性上
  • 属性不能拥有自定义的setter与getter
  • 属性类型需要为非空,且不能是原生数据类型(Int,Float)
class Person{
    lateinit var name:String  //此处换成Int原生数据类型会报错
    fun init(){
        this.name="张三"
    }
    fun print() {
        println(this.name)
    }
}
fun main(args: Array<String>) {
    var person=Person()
    person.init()
    person.print()
}
infix(中缀符号)

通过infix关键字满足以下条件

  • 是成员函数或是扩展函数
  • 拥有单个参数
  • 声明时使用infix关键字
class InfixTest(private var a:Int){
    infix fun add(b:Int)=this.a + b
}
fun main(args: Array<String>) {
    val infixTest =InfixTest(2)
    println(infixTest.add(5))
    println(infixTest add 5) //以上2种是等价的
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值