KotLin进阶&伴生对象

代理模式

interface Base {
    fun print()
}

class BaseImpl(val x: Int) : Base {
    override fun print() { print(x) }
}
class Derived(b: Base) : Base by b

//在 Derived 的父类列表中的 by 从句会将 b 存储在 Derived 内部对象,并且编译器会生成 Base 的所有方法并转给 b

//函数定义关键字为fun 参数格式
public fun sum(a:Int,b:Int) :Int = a+b;
类代理:

Kotlin 在语法上支持代理 ,Derived 类可以继承 Base 接口并且指定一个对象代理它全部的公共方法:

//主函数使用
fun main(){
	//使用代理类,执行操作类中的方法
	Dev(BaseIm("代理")).show();
}

//事件模型
interface Base{
 fun show()
}
//操作类
class BaseIm(str:String):Base{
 var str: String?=null
 init{
  this.str=str
 }
 override fun show(){
  print(this.str)
 }
}
//代理类
class Dev(b:Base):Base by b

属性字段相关

val a: Int = 1
val b = 1 // 系统自动推断变量类型为Int
val c: Int // 如果不在声明时初始化则必须提供变量类型
c = 1 // 明确赋值

var x = 5 // 系统自动推断变量类型为Int
x += 1

//使用field关键字
public var fieldProp = ""
    get() = field
    set(value) {
        field = value;
    }
//不生成:
val isEmpty: Boolean
    get() = this.size == 0
//生成:
val Foo.bar = 1

延迟初始化属性

public class MyTest {
    lateinit var subject: TestSubject

    @SetUp fun setup() {
        subject = TestSubject()
    }

    @Test fun test() {
        subject.method()
    }

NULL检查机制

Kotlin的空安全设计对于声明可为空的参数,在使用时要进行空判断处理,有两种处理方式,字段后加!!像Java一样抛出空异常,另一种字段后加?可不做处理返回值为 null或配合?:做空判断处理

//类型后面加?表示可为空
var age: String? = "23" 
//抛出空指针异常
val ages = age!!.toInt()
//不做处理返回 null
val ages1 = age?.toInt()
//age为空返回-1
val ages2 = age?.toInt() 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值