在将其正式变为只读以前,都必须用有有效的数据填充容器。一旦载入成功,最佳的做法就是用“不可修改”调用产生的句柄替换现有的句柄。这样做可有效避免将其变成不可修改后不慎改变其中的内容。在另一方面,该工具也允许我们在一个类中将能够修改的容器保持为private状态,并可从一个方法调用中返回指向那个容器的一个只读句柄。这样一来,虽然我们可在类里修改它,但其他任何人都只能读。
为特定类型调用“不可修改”的方法不会造成编译期间的检查,但一旦发生任何变化,对修改特定容器的方法的调用便会产生一个UnsupportedOperationException违例。
这段话不太明白,特别是红色字体。
那位高手解释一下?

解决方案 »

  1.   

      public static void main(String[] args) {
        List list = new ArrayList();
        list.add(new Object());
        list.add(new Object());
        list.add(new Object());
        Iterator iterator = list.iterator();//迭代器
        //    list.add(new Object());//去年本行注释试试看[1]
        while (iterator.hasNext()) {
          Object obj = iterator.next();
          System.out.println(obj);
        }
        list.add(new Object());//本行可以正确执行.[2]
      }
    就是说如果在读取此list时,你对它的访问还没有结束,为了不让其它线程修改它的,你可以先获取它的迭代器,
    这样别人就不可以修改了.就是说[1]执行会抛出异常,[2]则不会