Questions tagged «semantic-integrity»

2
如何安全地复制收藏集?
过去,我曾说过要安全地复制集合,请执行以下操作: public static void doThing(List<String> strs) { List<String> newStrs = new ArrayList<>(strs); 要么 public static void doThing(NavigableSet<String> strs) { NavigableSet<String> newStrs = new TreeSet<>(strs); 但是,这些“复制”构造函数,类似的静态创建方法和流是否真的安全?在哪里指定规则?所谓安全,是指Java语言和针对恶意调用者强制执行的集合提供的基本语义完整性保证,并假设有合理的支持SecurityManager且没有缺陷。 我很高兴与方法投掷ConcurrentModificationException,NullPointerException,IllegalArgumentException,ClassCastException,等,或者甚至挂起。 我选择String了一个不可变类型参数的示例。对于这个问题,我对具有自己陷阱的可变类型集合的深层副本不感兴趣。 (很明显,我已经看过了OpenJDK的源代码,并有某种形式的答案为ArrayList和TreeSet。)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.