English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
不可变的类/对象是不能更改其值的类/对象。例如,字符串在Java中是不可变的,即,一旦在Java中创建了字符串值,便无法对其进行修改。即使您尝试修改,也会使用修改后的值创建中间字符串,并将其分配给原始文字。
每当需要创建在初始化后无法更改的对象时,都可以定义不可变对象。没有创建不可变对象的特定规则,其思想是在初始化后限制对类字段的访问。
以下Java程序演示了final类的创建。在这里,我们有两个实例变量名称和年龄,除了不能为它们分配值的构造函数。
final public class Student { private final String name; private final int age; public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { return this.name; } public int getAge() { return this.age; } public static void main(String[] args) { Student std = new Student("Krishna", 29); System.out.println(std.getName()); System.out.println(std.getAge()); } }
输出结果
Krishna 29
不,并非所有属性都必须具有final属性才能创建不可变对象。在不可变对象中,您不应允许用户修改类的变量。
您可以这样做,通过将变量设置为私有而不提供设置方法来修改它们。
public class Sample { String name; int age; public Sample() { this.name = name; this.age = age; } public String getName() { return this.name; } public int getAge() { return this.age; } }