对于public static final String[] CODES={ "A","B""C""D""E},是得不到所期望的保护codes数组内容的功能的,至多只能做到保护指向codes的指针不可更改。

改进方案:

  • 解决方案1:定义一个私有数组,以及编写一个公有的非可变列表: 

        private static final String[] CODES ={ "A","B", "C", "D", "E"}; 

        public static final List VALUES= Collections.unmodifiableList(Arrays.asList(CODES)); 

    这个时候,如果VALUES有修改操作,会抛出java.lang.UnsupportedOperationException


  • 参考:http://www.javaeye.com/topic/54226    慎重使用final数组