Java中的不可变集合与使用场景

场景:你去购物时被人偷偷往你购物车里丢了东西

需求:
我们的需求是只有在创建对象(学生)时,才能设定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
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pub.ryan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值