不可变类
来源:互联网 发布:javascript中文手册 编辑:程序博客网 时间:2024/05/18 12:31
所谓的不可变类,顾名思义,也就是不可以被改变(对象一旦被初始化,那么就会保持原来的样子了)
问题:什么不可以被改变呢?
答:类包括属性和方法,也就是属性不可以被改变,其实是指对象一旦创建,那么该该对象的状态(属性)就不可以被改变
问题:那怎么确保可以不被改变呢?
答:
1.final修饰符,这个可以确保属性只能被赋值一次
2.不提供set方法,只提供get方法,这个可以确保不让你修改属性。
3.属性都是private,通过构造器去初始化
注意点:那么如果是属性是引用类型呢?我不是可以直接通过get引用类型来进行更改引用类型的状态吗?或者通过初始化的时候传进来的引用类型来更改吗?
答:这样的解决方式就是get的时候,我们返回的不是自己的引用类型的对象,而是新建一个对象去返回,这样即使你get到以后,这个对象并不是我自己的,而是全新的
例子:
class Name {
private String firstName;
private String lastName;
public Name(){}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public Name(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
}
public class Person {
private final Name name;
public Person(Name name) {
this.name=new Name(name.getFirstName(),name.getLastName()); --->通过匿名类来解决
}
public Name getName() {
//相当于返回的是一个复制
return new Name(name.getFirstName(),name.getLastName());
}
}
疑问:
属性有没有必要是final呢?因为,我已经通过private和禁用set控制了对属性的访问,那么它难道还可以被修改吗?
阅读全文
0 0
- 不可变类
- 不可变类
- 实现不可变类
- 不可变类
- Java 不可变类
- 不可变类
- Java不可变类
- 不可变类详解
- 不可变类
- java 不可变类
- 不可变类
- 不可变类
- 不可变类
- 不可变类
- Java-不可变类
- 不可变类
- 不可变类
- 不可变类
- 阿里云服务器Tomcat、nginx无法访问——端口问题
- HAL so库加载机制---之一
- T
- 程序员面试金典——元素查找_____
- 欢迎使用CSDN-markdown编辑器
- 不可变类
- Unity3d shader 学习笔记
- Host SMBus controller not enabled
- [LeetCode]26. Remove Duplicates from Sorted Array
- 洛谷OJ
- HTTP协议
- string4
- 集体智慧编程第四章[搜索引擎与排名]总结
- Java中|、||、&、&&的各种用法和区别