zoukankan      html  css  js  c++  java
  • Java中的可选操作

    在《Java编程思想》第17章容器深入研究中,描述了Collection的可选操作,即执行各种不同添加和移除的方法在Collection接口中都是可选操作。(可参考P472)

    可选操作的具体实现与表现:一般是在Abstract类中实现特定方法,但是该方法体内只有一条抛出UnsupportOperationException异常语句;从而继承该抽象类却没override该方法的类,在进行向上转型使用root interface来调用该方法时,在运行时抛出异常。

    定义可选操作的原因:“这样做可以防止在设计中出现接口爆炸的情况”。通过抽象类来推迟某些方法的实现,直到需要实现的时候。

    深入去理解书上提出的Arrays.asList()方法,查看源码可知:

    public static <T> List<T> asList(T... a) {
        return new ArrayList<>(a);
    }

    而此处的返回的ArrayList是Arrays的内部类(通过继承AbstractList实现),但是却没有重写add方法,因此使用该方法将会抛出UnsupportOperationException异常。

    List<Integer> a = Arrays.asList(1,2,3);
    a.add(4);//Illegal
    boolean b = a.contains(1);

    总结:

    1. 在运行时,若抛出UnsupportOperationException异常,应该从底层Abstract实现查找原因,并进行相应的重写来避免该异常;

    2. 在设计模式的角度,应该面向接口编程,同时对于较多的导出Abstract类进行相应的方法可选操作;

  • 相关阅读:
    PAT乙级-1037. 在霍格沃茨找零钱(20)
    PAT乙级-1041. 考试座位号(15)
    PAT乙级-1047. 编程团体赛(20)
    css3 实现 背景图片显示
    块级元素与行内元素(内联元素)的区别和联系
    JS变量
    导航条菜单的制作 滑动缓慢
    HTML中Id和Name的区别
    全面理解Javascript中Function对象的属性和方法
    理解盒子模型
  • 原文地址:https://www.cnblogs.com/jayinnn/p/11024075.html
Copyright © 2011-2022 走看看