浅析Collections.unmodifiableList

类中成员和方法的可见性一直是JAVA程序员必须时刻关注的问题。常量我们通常都会使用final去修饰,在给final常量赋值的时候,IDE会有很明显的报错。但是我们对于常量数组(集合)一般也会这样,例如public static final String[] STR_LIST = {"a", "b"},我们一般都会认为这种写法没有太大的问题,但是如果运行如下代码:

public class TestList {
  public static final String[] STR_LIST = {"a", "b"};
  public static void main(String[] args) {
    System.out.println(Arrays.toString(STR_LIST));
    STR_LIST[1] = "c";
    System.out.println(Arrays.toString(STR_LIST));
  }
}

你会发现我们认为的常量数组很轻易的被改变了。
这时候我们就可以用到Collections.unmodifiableList来实现List的不能修改。测试代码如下:

public class TestList {
  public static void main(String[] args) {
    List<String> list = new ArrayList<String>();
    list.add("a");
    list.add("b");
    System.out.println(list);
    list.add("c");
    System.out.println(list);
    List<String> list2 = Collections.unmodifiableList(list);
    System.out.println(list2);
    list2.add("d");
    System.out.println(list2);
  }
}

list2.add的时候会抛出UnsupportedOperationException,这样可以有效的提醒使用者此list无法被操作。
建议使用如下的方式对外暴露常量数组(集合)
public static final List OBJECTS_LIST = Collections.unmodifiableList(list);

未经允许禁止转载~
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇