最佳实践:如何判断集合/ set/let是否是Guava ImmutableSet/Immutable映射?

fis*_*rds 3 java guava

我的代码中有一个错误,我正在尝试修改一个真正是从客户端程序/程序员传入的Guava ImmutableList的List.

测试此问题的最佳方法是什么,而不是在.add()失败时等待异常?

Lou*_*man 10

测试此问题的最佳方法是什么,而不是在.add()失败时等待异常?

如果您不知道返回的列表是否可变,则无论如何都应将其复制到可变集合中.如果返回的列表是另一个ArrayList,那么副本的成本是最小的 - 它会降低到快速的速度System.arraycopy.

(也就是说,客户端库有时会返回可修改的列表,有时候不可修改的列表本身也是一种邪恶行为.)

如果你必须在运行时检查,使用instanceof ImmutableMapImmutableCollection或任何是适当.