kotlin中的val 真的是只读吗?关于val 的一个细节

在我们开始学kotlin的时候,定义变量的时候,var是可变变量,val是只读变量,类似于java中final,但是在实际操作中,val的量真的是不可以改变的吗?

对于基本变量而言,可读和不可变确实没什么区别,因为你无法去重写一个val变量,在这个时候的确是不可变的

但是当变量是成员变量的时候,只读和不可变就是两种不同的类型了

var和val最大的区别就是是否设置了get和set,我们都知道var同时又get和set,但是在val中只有get,

但是做为成员变量,当我们修改这个值并且修改这个值,重新返回的时候,那么即使你使用val去定义变量,那么也是可以改变的,看下面代码👇

class Test(val birthDay: DateTime) {  
  val age: Int
    get() = yearsBetween(birthDay, DateTime.now())
}

我们直接对get方法进行赋值,经过运行发现,值确实会改变,但是kotlin官方不建议我们这样操作,更建议我们提供方法将值抛出

这更加说明了即使用了val定义变量,其实也是可以改变的

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值