美文网首页
聊聊kotlin的val跟var

聊聊kotlin的val跟var

作者: 韦东锏 | 来源:发表于2021-03-01 09:06 被阅读0次

了解kotlin,最先接触的就是val跟var了,下面详细说说这两个字段的特性

val

val:英文读value,代表是immutable, 只读的意思 比如下面这个kotlin代码

val item = "I am val"

转成对应的java代码如下

@NotNull

声明了一个final的String,并且设置了一个get方法,确实说明了val的修饰的变量,只能赋值一次,后续无法再次赋值

如果我在前面加个private修饰符

private val name = "I am val"

对应的java代码

private final String name = "I am val";

可以发现,对应的get方法没有了

其实这种写法,真的是非常的优雅;

对于java来说,很多人声明一个变量的时候,常常忘记加final修饰语,从而埋下了隐患,比如这个变量传到其他方法中,或者再其他的使用中,不小心给他重新赋值,或者把这个变量置空,导致了其他不可预期的问题

但是kotlin只需要一个val就可以快速实现这个特性,很方便优雅

这一点,在java的圣经《Effective Java》中,也有提及,叫做:

Minimize mutability

Immutable classes are easier to design, implement, and use than mutable classes. They are less prone to error and are more secure.

所以使用val是一种更安全,更不容易出错的写法,再后续的开发中,应该尽量使用val修饰符 就像里面所说的

Image

var

var:英文读variable,变量的意思,也就是指的mutable 比如下面这个kotlin代码

var item = "I am var"

对应的java代码

@NotNull

var做了三件事

  1. 声明了一个private变量
  2. 生成了对应的get方法
  3. 生成了对应的set方法

不知细心的你有没有注意到,set方法的参数有一个@NotNull的修饰符,还有一个Intrinsics.checkParameterIsNotNull(var1, "<set-?>")的方法

如果编译期可以判断是null,不小心传了null,这里就会编译不过,提示你修复,如果编译器判断不了,避免错误,在运行的时候,也会直接崩溃来提示你

简简单单的一个修饰符,却可以帮我们做这么多事情,是不是深深迷上了kotlin了

写到这里,对于自动生成的get方法跟set方法,如果我们要自定义实现,要怎么办

可以用下面的方式

var name = "I am var"

需要注意的是,kotlin的set方法,取当前的变量,是用field这个关键字

这个是对应的java的代码

@NotNull

可以看出来,对应的get跟set方法都变了

简简单单的val跟var,其实隐藏了很多信息,这里做个介绍 有任何疑问,欢迎微信交流

相关文章

  • 聊聊kotlin的val跟var

    了解kotlin,最先接触的就是val跟var了,下面详细说说这两个字段的特性 val val:英文读value,...

  • Kotlin 理解随笔

    定义变量 var / val kotlin 定义变量 如下: var name:String ="张三" val ...

  • Kotlin如何预防空指针和解决“!!”

    用Val而不是Var在 Kotlin 中 val 代表只读,var 代表可变。建议尽可能多的使用 val。val ...

  • kotlin入门(一)

    kotlin入门(一)kotlin入门(二)kotlin入门(三) var与val var 表示该变量是可修改的变...

  • Kotlin秘籍之变量

    Kotlin中怎样声明一个变量 kotlin中声明变量需要使用val和var关键字 例如: var 和 val的区...

  • 记kotlin 中var、val与Java的final

    Kotlin关键字var 与val var 读写修饰的关键字var 可以重写set、get方法val只读修饰的关键...

  • Kotlin笔记

    一、Kotlin基础 1.1 变量 在Kotlin中变量分为可变引用var和不可变引用val,val对应的是jav...

  • Kotlin的var和val

    什么是常量 val = value , 值类型 类似 java 的final 不能重复赋值!!!例如: 什么是变量...

  • Kotlin学习笔记-数据类型 变量(2)

    var/val 变量名: 数据类型var/val 变量名: = 变量值 类型推导 kotlin 有类型推导机制 声...

  • kotlin基础之一 变量常量

    语法 一,语法. 1.1var 与 val. kotlin中,var符号表示的是变量,可以多次重复赋值。 而val...

网友评论

      本文标题:聊聊kotlin的val跟var

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