局部变量类型推断:val和var

2023-12-13 18:28:53

翻项目代码,好多地方在用val定义变量,这里整理下。

1、lombok的val

//用法
val filePath = filePo.getFilePath();
  • val是Lombok提供的

  • val的使用场景是懒得写变量类型时,或者其初始化表达式类型很直观时,否则太影响可读性

  • val是用来声明局部变量的,它会根据赋值号后面的表达式来推断变量类型,因此初始化表达式必填

  • val声明的局部变量都是final的

  • val不能用于成员变量

  • val可用于foreach循环

for( var element : list){
	//....
}

2、Lombok下的var

类似Lombok的val,但其修饰的变量不是final的。

var code = "123";

//...

code = "456";

3、Java 10的var

Java的var,和Lombok的var类似,其变量也不是final的。但注意其Since Java 10

4、复习

前面一直提到final,这里再顺带复习下这个关键字:

  • final修饰的类无法继承
  • final修饰的方法无法覆盖
  • final修饰的变量只能赋值一次
  • 因此,final修饰的变量是引用时,指向的对象不能再变,但对象内部的属性和引用值无关,可修改
  • final修饰的实例变量必须手动初始化,Java不会给类型默认值
  • final修饰的实例变量,说明所有对象的这个属性值都一样,因此,一般配合static使用,即常量

文章来源:https://blog.csdn.net/llg___/article/details/134920995
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。