一般情况下对于我们自定义的ava对象中private类型变量一般不提供set方法来保证数据不被修改,但是如果你的对象List成员只要你提供get方法后,就可以随意add、remove改变其结构,这样显然跟我们的本意是不一样的,这个时候Collections就提供了一个静态方法unmodifiableList,他就可以可以达到目的。
首先我们去看下这个方法:
public static <T> List<T> unmodifiableList(List<? extends T> list);
大概用法就是:
传入一个List实例A,返回这个list的只读视图B,类型依然是List。之后对B进行add、remove等改变 其内容的操作的话那么将导致编译不通过。
创建对象user01
测试查看:
修改我们的user类如图所示:
在进行同样的操作:
总结:
发现报错了。
可见使用unmodifiableList可以保证对象的list内容不被意料之外地修改,保证对象的封装性。