Collections字段EMPTY_SET、EMPTY_LIST和EMPTY_MAP分别起到了什么作用呢?我用以下代码:        List<String> list = Collections.EMPTY_LIST;
        list.add("aa");
        System.err.println(list.size());会报Exception in thread "main" java.lang.UnsupportedOperationException的异常,也就是说List为一个空的列表,但定义了之后有不能使用,那请问各位大神List<String> list = Collections.EMPTY_LIST;这句话定义的列表到底起了什么作用呢?或者在哪些地方能用到?最好举个例子哈!在这里先谢谢大家啦!

解决方案 »

  1.   

    有些方法返回list,map或者set,同时这些方法要求永不返回null
    譬如有些条件一判断就知道要返回一个空集合,就不得不new一个,然后返回。就可以用这里的这个常量
      

  2.   

    它返回的是一个不可变的List。没有办法add。
    使用场影,比如当一个查询结果集为空,而不想返回null时,这时可以用Collections.EMPTY_LIST来返回一个空集合。如果楼主平时用不到的话,那就不要用好了,不用太纠结这个。
      

  3.   

    EMPTY_LIST 返回的list是不可变的(Immutable) 所以不能用ADD
      

  4.   

    EMPTY_SET
    public static final Set EMPTY_SET空的 set(不可变的)。此 set 是可序列化的。 另请参见:
    emptySet()--------------------------------------------------------------------------------EMPTY_LIST
    public static final List EMPTY_LIST空的列表(不可变的)。此列表是可序列化的。 另请参见:
    emptyList()--------------------------------------------------------------------------------EMPTY_MAP
    public static final Map EMPTY_MAP空的映射(不可变的)。此映射是可序列化的。 从以下版本开始: 
    1.3 
    另请参见:
    emptyMap()