在此示例中是否需要制作 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 中传递的值仍然相同?