如果我有这样的哈希图:
private final Map<String, Collection<String>> descriptions = new HashMap<>();
如何将值安全地传递给异类方法?
如果我这样做:
myOtherObject.outputDesc(descriptions.values());
那么myOtherObject可以更改值。
这样会安全吗?
myOtherObject.outputDesc(new ArrayList<>(descriptions .values()));
最佳答案
按照您的建议创建集合的副本是一种可行的方法。但是不需要额外的精力来复制列表。 Java为preventing value changes提供了更方便的方法:
myOtherObject.outputDesc(Collections.unmodifiableCollection(descriptions.values()));