【发布时间】:2018-10-26 21:01:06
【问题描述】:
我有一个类似这样的 java 类
class Runner {
public Object run(Map<String, Object> input);
public String name();
}
public class Test {
public static void main(String args[]) {
Map<String, Object> map = Maps.newHashMap();
List<Runner> runners;
forEach(Runner runner: runners) {
Object obj = runner.run(map);
map.put(runner.name(), obj);
}
}
}
在上面的代码中,我调用了 Runner 类的 run 方法并将它产生的输出添加到 Map 对象中。对跑步者对象列表重复此操作。如何使作为输入传递给 run 方法的 map 对象不可变?我考虑过从地图创建一个不可变地图并将其作为输入参数传递。但我担心我可能创建的不可变映射的数量取决于执行的运行器对象的数量,这可能导致 OOM 错误。有没有关于如何去做的模式或解决方案?任何建议将不胜感激。
【问题讨论】:
-
不可变的地图可以在跑步者返回后立即被垃圾收集,所以这应该不是问题。
标签: java immutability immutable-collections