不可变类

创建“不可变的类”的对象后,此对象的属性不可改,而且也无法从此类派生出新子类。String就是一个典型的例子。String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。

字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。例如:

     String str = "abc";
 

等效于:

char data[] = {'a', 'b', 'c'};
     String str = new String(data);
不可变类的实例:Address.java
public final class Address
{
	private final String detail;
	private final String postCode;

	//在构造方法里初始化两个实例属性
	public Address()
	{
		this.detail = "";
		this.postCode = "";

	}
	public Address(String detail , String postCode)
	{
		this.detail = detail;
		this.postCode = postCode;
	}
	//仅为两个实例属性提供getter方法
	public String getDetail()
	{
		 return this.detail;
	}

	public String getPostCode()
	{
		 return this.postCode;
	}
	//重写equals方法,判断两个对象是否相等。
	public boolean equals(Object obj)
	{
		if (obj instanceof Address)
		{
			Address ad = (Address)obj;
			if (this.getDetail().equals(ad.getDetail()) && this.getPostCode().equals(ad.getPostCode()))
			{
				return true;
			}
		}
		return false;
	}
	public int hashCode()
	{
		return detail.hashCode() + postCode.hashCode();
	}
}



原文地址:https://www.cnblogs.com/gdp176119/p/4942265.html