通常创建一个对象后,它的内容是允许随后改变的。有时候,也需要创建一个一旦创建,其内容就不能再改变的对象。我们称这种对象为一个不可变对象(immutable object),而它的类就称为不可变类(immutable class)。例如:String类就是不可变的。
如果一个类是不可变的,那么它的所有数据域必须都是私有的,而且没有对任何一个数据域提供公共的set方法。一个类的所有数据都是私有的且没有修改器,并不意味着它一定是不可变类。例如下面的Student类,它的所有数据域都是私有的,而且也没有set方法,但它不是一个可变的类。
- public class Student {
- private int id;
- private String name;
- private java.util.Date dateCreated;
- public Student(int ssn, String newName) {
- id = ssn;
- name = newName;
- dateCreated = new java.util.Date();
- }
- public int getId() {
- return id;
- }
- public String getName {
- return name;
- }
- public java.util.Date getDateCreated() {
- return dateCreated;
- }
- }
如下面的代码所示,使用getDateCreated()方法返回数据域dateCreated。它是对Date对象的一个引用。通过这个引用,可以改变dateCreated的值。
- public class Test {
- public static void main(String[] args) {
- Student student = new Student(123,"John");
- java.util.Date dateCreated = student.getDateCreated();
- dateCreated.setTime(200000);
- }
- }
要使一个类成为不可变的,它必须满足下面的需求:1、所有数据域都是私有的;2、没有修改器方法;3、没有一个访问器方法,它会返回一个指向可变数据域的引用。
阅读(2007) | 评论(0) | 转发(0) |