如果我有这样的哈希图:

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()));

10-07 23:28