【发布时间】:2014-02-18 09:43:23
【问题描述】:
在此示例中是否需要对 fileName 参数进行防御性复制?
public static Context getInstanceFromFile(final String fileName)
throws IOException, FileNotFoundException, ContextException {
if (fileName == null) {
throw new NullPointerException("The fileName argument is null.");
}
return instance.loadParametersFromFile(String.valueOf(fileName));
}
理论上,另一个线程可以在调用loadParametersFromFile 方法之前修改文件名。在调用String.valueOf(fileName) 之前不是这样吗?
当调用 loadParametersFromFile 时,如何确保在 fileName 中传递的值仍然相同?
【问题讨论】:
-
修改
String?不,这是不可能的,不需要复制任何东西。
标签: java thread-safety defensive-copy