use*_*111 2 java collections guava
我已经看到 ImmutableMap.of 用于创建不可变的映射对象。同时,Java 提供了 Map.of,它也可以创建不可变的映射。使用 ImmutableMap.of 代替 Java 中的 Map.of 有什么优势吗?
编辑:我不是在问地图和不可变地图之间的区别。我问为什么有些人更喜欢 ImmutableMap.of 而不是 Map.of ,后者也创建了 immutableMap 。
Hul*_*ulk 10
一个可能的缺点Map.of是它返回Map,它提供了许多记录在案的方法,以便UnsupportedOperationException在映射不可变的情况下抛出 - 这可能被认为是 API 设计中的一个缺点。代码消耗者没有可靠的方法Map来知道其中任何一个是否有效。
做出这个决定有充分的理由,例如能够利用现有的代码库而不破坏向后兼容性。但这的代价是类型系统无法帮助传达给定方法是否可以接受(或需要)不可变或可变映射。这留给文档处理。
(番石榴ImmutableMap也实现了Map,但至少不支持的方法被标记为已弃用。可以说仍然不理想,但是......权衡)
| 归档时间: |
|
| 查看次数: |
1478 次 |
| 最近记录: |