Final修饰的类中成员是不可变的
时间: 2024-03-23 10:39:06 浏览: 23
final 修饰符用于类中的成员变量时,表示该变量是一个常量,只能被赋值一次。一旦被赋值后,就不能再次修改,但是这并不表示该变量是不可变的。
一个 final 类中的成员变量可以是可变的,只是它们的引用不能被更改。例如:
```
public final class MyClass {
private final List<String> myList; // myList 引用是不可变的
public MyClass(List<String> list) {
this.myList = list;
}
public void updateList() {
this.myList.add("New Element"); // 可以修改 myList 引用指向的对象
}
}
```
在上面的例子中,myList 引用是 final 的,一旦指向了一个 List 对象,就不能再指向其他对象。但是,List 对象本身是可以修改的,因为它并不是 final 的。
需要注意的是,如果希望类中的成员变量是真正的不可变的常量,应该使用 final 和 static 修饰符。这样可以确保该常量在类的所有实例中都是一样的,并且不会被修改。例如:
```
public final class MyClass {
public static final int MAX_VALUE = 100;
}
```
在上面的例子中,MAX_VALUE 是一个不可变的常量,它是 final 和 static 修饰的,因此在类的所有实例中都是一样的,并且不能被修改。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)