在finally块中将null指定给变量
这个问题在这里已经有了答案:
基本上,Java所做的是以下内容:
StringBuilder valueToReturn = builder.append("Passed!!!");
executeFinallyBlock();
return valueToReturn;
无论你在finally块中做什么,Java都会保留对返回值的引用,并返回该引用。 所以它变成:
StringBuilder valueToReturn = builder.append("Passed!!!");
builder = null;
return valueToReturn;
答案很简单。
Finally
块将被肯定执行,因为你没有从它返回任何值, try
块的返回值将被传递给原来的调用者
try {
builder.append("Test ");
return builder.append("Passed!!!");
} finally {
builder = null;
}
因此,你会得到“测试通过!!!”
将代码更改为
StringBuilder builder = new StringBuilder();
try {
builder.append("Test ");
return builder.append("Passed!!!");
} finally {
return null;
}
如你所料,肯定会打印出“null”
链接地址: http://www.djcxy.com/p/73711.html