不允许改变的容器

301 阅读1分钟

系列文描述:

  该文章是日常笔记系列的第二篇第二节,主要记录了如何使用不允许改变的容器,相信看完肯定有所收获。

不允许改变的容器

作用描述:

最近在研发中间件期间,由于业务需要,需要通过配置生成全局所有的容器,而该容器对外是不允许外界修改的,为了满足这种需求,使用了不可变集合,顾名思义,该种集合除了get操作,不允许外界增删改。

代码演示:
import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;

    public class TestMain {

    public static void main(String[] args) {

        List<TestBean> originList = new ArrayList<>();
        originList.add(TestBean.valueOf(1));
        originList.add(TestBean.valueOf(2));
        originList.add(TestBean.valueOf(3));

        List<TestBean> unmodifiableList = Collections.unmodifiableList(originList);
        for (TestBean t : unmodifiableList) {
            System.out.println(t.getA());
        }
        unmodifiableList.add(TestBean.valueOf(4));
      }
    }

    class TestBean {

    private int a;

    public static TestBean valueOf(int a) {

        TestBean testBean = new TestBean();
        testBean.a = a;

        return testBean;
    }

    public int getA() {
        return a;
    }

    public void setA(int a) {
        this.a = a;
    }
    }

代码很简单,先是构建了一个正常的List,后通过 List unmodifiableList = Collections.unmodifiableList(originList); 构建不可变容器,运行结果如下:

不可变容器.png

由于不可变容器不允许对容器做add操作,于是报错了,直接查看jdk源码

不可变容器源码.png

一句话总结:

在研发中,如果需要使用到不可变容器来规避风险,那么可以尝试使用jdk提供的不可变容器,除了List外还有Map、Set等,具体可以自己查看。

结尾说点什么

说好的一周一篇,上个周末沉迷docker的使用导致废了,然后最近又是每天都是差不多十二点下班,所以只能下班后花时间写总结最近的笔记了(  ̄▽ ̄)((≧︶≦)


系列博客可以关注公众号:

公众号.jpg

个人网站:myblog.lixifan.cn/