java中不可变类

package frank;
/*
真正的不可变类
*/
public class App
{
	private final Name name;
	public App(final Name name)
	{
		this.name = new Name(name.getFirstName(),name.getLastName());
	}
	public Name getName()
	{
		return new Name(name.getFirstName(),name.getLastName());
	}
	public static void main(String[] args)
	{
		Name name = new Name("悟空","张珊");
		App a = new App(name);
		Name name2 = a.getName();
		name2.setFirstName("1");
		System.out.println(a.getName().getFirstName());
	}
}
class Name
{
	private String firstName;
	private String lastName;
	public Name(String firstName,String lastName)
	{
		this.firstName = firstName;
		this.lastName = lastName;
	}
	public void setFirstName(final String firstName)
	{
		this.firstName = firstName;
	}
	public void setLastName(final String lastName)
	{
		this.lastName = lastName;
	}
	public String getFirstName()
	{
		return this.firstName;
	}
	public String getLastName()
	{
		return this.lastName;
	}
}

  我们在编写不可变类的时候,应该要注意类里面的引用字段,防止通过外面把里面的值改变了。

posted on 2013-08-05 22:05  wp456  阅读(172)  评论(0)    收藏  举报

导航