在学习lombok时,文档中有这么一个例子:
public class LombokTest {
@Test
public void example() {
val example = new ArrayList<String>();
example.add("Hello, World!");
val foo = example.get(0);
System.out.println(foo.toLowerCase());
}
@Test
public void example2() {
val map = new HashMap<Integer, String>();
map.put(0, "zero");
map.put(5, "five");
for (val entry : map.entrySet()) {
System.out.printf("%d: %s\n", entry.getKey(), entry.getValue());
}
}
}
可以使用val来代替final表示不可修改的变量。
但是示例中可以往list中添加数据,那么final修饰的变量不可变的到底是什么呢?
解释:不可变的是变量的引用地址,变量所指向的对象的内容,是可以改变的,比如这里向list中添加元素。
如果使变量重新指向其他对象,则报错,如下图: