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;
}
}
我们在编写不可变类的时候,应该要注意类里面的引用字段,防止通过外面把里面的值改变了。
浙公网安备 33010602011771号