Jdk中的Collections.unmodifiable与使用
场景:你去购物时被人偷偷往你购物车里丢了东西
需求:
我们的需求是只有在创建对象(学生)时,才能设定ta的课程,所以我们在设计类时,只用了get方法
即:
public List getCources() {
return cources;
}
并未给ta setCources的权限,就是不希望外部程序可以在任何拿到学生对象时都可以任意往课程list中添加元素,只能在声明时一次性的加到初始化中, 如果用final就只能每次都只能用初始化的值,final在声明时就必须赋值,也无法解决我们的要求,所以我们需要改造一下getXX方法,将此集合设置为不可变集合,即除了通过构造器外,不能在任何其它地方进行赋值
就好比你只能让学生自己选择课程,即在初始化时直接选好课程,而不能在学生不知道的情况下随便偷偷的通过setXXX往里面加课程,也不能把人家选好的课程直接删除不给人家上了,所以需要进行控制
//这是我们的类Student类,并没有set方法
class Student{
private String sid;
private String sname;
private List<Course> cources;
public Student(){
}
public Student(String sid, String sname, List<Course> cources) {
this.sid = sid;
this.sname = sname;
this.cources = cources;
}
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public List<Course> getCources() {
return cources;
}
@Override
public String toString() {
return "Student{" +
"sid='" + sid + '\'' +
", sname='" + sname + '\'' +
", cources=" + cources +
'}';
}
static class Course {
private String cid;
private String cname;
public Course(String cid, String cname) {
this.cid = cid;
this.cname = cname;
}
public Course