不可变类的意思是创建改类的实例后,该实例的实例变量是不可改变的,java提供的8个包装类和java.lang.String类都是不可变类。当创建他们的实例后,它们的实例是不可改变的。
例如:String str = new String("hello");
当创建了一个String对象,并为这个对象传了"hello"这个字符串作为参数,那么String肯定会提供实例变量来接受这个参数,但是程序却再次无法修改这个实例变量的值了。因为String类没有提供修改变量的方法。
创建不可变类有以下几个规则:
1.使用private和final来修饰该类的成员变量
2.提供有参构造方法,用于根据传入参数来初始化该类的成员变量
3.仅仅提供该类的getXxx()方法,不提供setXxx()方法
4.如果有必要,请重写Object类的hashCode()和equals()方法。 |
|