您的位置:首页 > 编程语言 > Java开发

java不可变类

2020-02-04 13:43 148 查看

java不可变类

不可变类-生命周期里一直保持初始化状态

如果要创建不可变类尤其要注意其引用类型的成员,引用类型常量虽然不能重新赋值,但其所指向的类容还是会发生改变

public class Person {  //本意设置为不可变类
private final Name name;	//该变量为引用类型变量虽然不能重新赋值,但其所指向的类容还是会发生改变
public Person(Name name){
//		this.name=name;   //接受了外部传过来的引用,导致name指向的内容会被修改不符合不可变类的本意,应该为下面形式,只接受外部传递的值
this.name=new Name(name.getFirstName(),name.getLaseName());
}
public Name getName(){
//		return name;   //将name的引用传递给外部会导致name里的内容被修改,应改为下面形式
return new Name(name.getFirstName(),name.getLaseName());
}
public static void main(String[] args) {
Name n=new Name("悟空","孙");
Person p=new Person(n);
System.out.println(p.getName().getFirstName());
n.setFirstName("八戒");
System.out.println(p.getName().getFirstName());
n=p.getName();
n.setFirstName("八戒");
System.out.println(p.getName().getFirstName());
}

}
public class Name {
private String firstName;
private String laseName;
public Name(){}
public Name(String firsName,String laseName){
super();
this.firstName=firsName;
this.setLaseName(laseName);
}
public String getFirstName(){
return this.firstName;
}
public void setFirstName(String firstName){
this.firstName=firstName;
}
public String getLaseName() {
return laseName;
}
public void setLaseName(String laseName) {
this.laseName = laseName;
}

}
  • 点赞 1
  • 收藏
  • 分享
  • 文章举报
江叶_ 发布了4 篇原创文章 · 获赞 3 · 访问量 57 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: