Enum 修复findbugs问题记录一则,List想表示不可变集合
来源:互联网 发布:168信息数据 编辑:程序博客网 时间:2024/06/06 15:36
问题描述:目前业务中可能对某些参数只支持某些固定的字符串,比如dot/cat,最初的实现很简单朴素
private static final List<String> SUPPORT_ANIMAL = Arrays.asList("dog","cat","bear");用的时候直接判断SUPPORT_ANIMAL.contains(xx); 其实能够表示这些是一个整体
问题在于,这个List别人可以随便修改,虽然List保证了是集合,但是static和final也保证不了集合的不可变性(因为内存保存的关系,这只能保证集合的引用不改变);
问题解决:用Enum替代,用enum自带的static和final特性
enum Animal1 { dog, cat, bear; private static EnumSet<Animal1> set = EnumSet.allOf(Animal1.class); public static boolean contains(String args) { try { return set.contains(valueOf(args)); } catch (Exception e) { return false; } } }
2.23补充,最终由于Enum修改代码较长,最终改为private static final一个变量的temp,再public static final List<String> xx= Collections.unmodifiableList(temp)开放出去的真正的不可变,多一行搞定
0 0
- Enum 修复findbugs问题记录一则,List想表示不可变集合
- Immutable(不可变)集合
- 不可变集合NSSet
- Guava不可变集合
- 不可变集合
- Scala 不可变 List
- Scala集合,序列(可变和不可变List),List各种函数的使用,不可变Set和可变Set,Map
- Google Guava 不可变集合
- Scala 不可变 List 方法
- GUava集合[Collections]2.1-不可变集合
- Guava学习笔记:Immutable(不可变)集合
- [Google Guava] 2.1-不可变集合
- [Google Guava] 2.1-不可变集合
- Guava学习笔记:Immutable(不可变)集合
- 不可变的集合带来的意外
- Object-C,NSSet,不可变集合
- Java-类库-Guava-Immutable(不可变)集合
- [Google Guava] 2.1-不可变集合
- 自制操作系统2-ubuntu下的工作环境搭建
- cmd for 循环拷贝文件
- SSL1411最小函数值
- const、引用、函数调用等之间的关系
- python实现CSDN下载资源自动评分(selenium+requests)
- Enum 修复findbugs问题记录一则,List想表示不可变集合
- 持久化存储-MySql拓展-Master-Slave
- 第一篇微博
- 统计学习精要 (Elements of Statistical Learning ) 习题 2.2
- VMware Workstation 12 Pro 安装 Ubuntu15
- Spring Bean标签中abstract和parent属性
- OFBIz中build.gradle文件中关键词解释
- Java 包的定义与使用
- Android中RatingBar星星数量问题