对于常见未得到支持操作的理解

  未获支持的操作只有在运行时候才能探测到,因此他们表示动态检查。java中有大量的动态检查机制提供这一特点。

最常见的未获支持操作。是由于容器的固定尺寸的数据结构支持。

 下面看代码:

public class Unsupported { static void test(String msg, List<String> list){
        System.out.println("-----"+msg+"-----");
        Collection<String> c=list;
        Collection<String> sublist=list.subList(1,8);
        Collection<String> c2=new ArrayList<>(sublist); try{
        c.retainAll(c2);
        }catch (Exception e){
            System.out.println("retainAll:"+e);
        } try{
        c.removeAll(c2);
        }catch (Exception e){
            System.out.println("removeAll:"+e);
        } try{
        c.clear();
        }catch (Exception e){
            System.out.println("clear:"+e);
        } try{
        c.add("X");
        }catch (Exception e){
            System.out.println("add:"+e);
        } try{
        c.addAll(c2);
        }catch (Exception e){
            System.out.println("addAll:"+e);
        } try{
        c.remove("c");
        }catch (Exception e){
            System.out.println("remove:"+e);
        } try{
        list.set(0,"X");
        }catch (Exception e){
            System.out.println("set:"+e);
        }
    } public static void main(String[] args){
        List<String> list= Arrays.asList("A B C D E F G H I J K L".split(" ")); test("Modifiable Copy",new ArrayList<>(list)); test("Arrays.asList()",list); test("unmodifiableList()", Collections.unmodifiableList(new ArrayList<String>(list)));
    }
}
-----Modifiable Copy-----
-----Arrays.asList()-----
retainAll:java.lang.UnsupportedOperationException
removeAll:java.lang.UnsupportedOperationException
clear:java.lang.UnsupportedOperationException
add:java.lang.UnsupportedOperationException
addAll:java.lang.UnsupportedOperationException
-----unmodifiableList()-----
retainAll:java.lang.UnsupportedOperationException
removeAll:java.lang.UnsupportedOperationException
clear:java.lang.UnsupportedOperationException
add:java.lang.UnsupportedOperationException
addAll:java.lang.UnsupportedOperationException
remove:java.lang.UnsupportedOperationException
set:java.lang.UnsupportedOperationException
因为Arrays.saList()生成一个List数值,它基于一个固定大小的数组,仅仅支持那些不会改变的数组大小进行操作。任何会引起底层数据结构的尺寸改变的修改都会产生一个异常,表示未获支持调用。

转载于:https://my.oschina.net/puzhiyuan/blog/669990

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值