Collections.unmodifiableList(...)返回静态内部类 UnmodifiableList的新实例。其他不可修改的集合类以相同的方式构造。

将ozt_rstrong公开,这些类有两个优点:

  • 能够指示更具体的返回值(例如UnmodifiableList),因此API用户不会想到修改该集合;
  • 在运行时检查List是否为instanceof UnmodifiableList的能力。

  • 那么,公开这些类(class)是否有而不是的优势?

    编辑:没有提出任何令人信服的论据,因此我选择了最受支持的答案。

    最佳答案

    我认为这两个优点都存在,但没有那么有用。主要问题保持不变:UnmodifiableList仍然是一个List,因此所有的setter都可用,并且基础集合仍然是可修改的。将类UnmodifiableList公开将增加无法修改的幻想。

    更好的方法是为编译器提供帮助,但是为此,收集类层次结构必须进行很多更改。例如,Scala的collection API在这方面更高级。

    缺点是将至少三个其他类/接口(interface)引入API。由于它们没有那么有用,我认为将它们排除在API外是一个不错的选择。

    10-07 12:27