我知道至少有两种机制可以强制不应修改Collection:
但是,我注意到它们都通过抛出异常(例如UnsupportedOperationException)在运行时强制执行合同。
问题:
答案 0 :(得分:2)
你只能通过在课堂上没有变异方法来做到这一点。但是,如果你想实现一个具有变异语义方法的现有接口,你就会陷入困境(即使静态分析在一般情况下也不会帮助你)。
答案 1 :(得分:2)
Collections API的原始作者(遗憾的是)没有对不可变集合和可变集合进行区分。不可变的API没有变异方法(但可能会在内部重建集合为Persistent data structure)。
请参阅Scala作为JVM上支持不可变和可变集合的Collections API的示例。