我正从数组中返回一个值,但我希望之后将该值设置为null。问题是我一直收到错误。这是为什么?
public Book retrieveBookFromBookshelf (String title)
{
for (int i = 0; i < this.books.length; i++) {
if (this.books[i].getTitle().equals(title)) {
return this.books[i];
this.books[i] = null;
}
}
return null;
}
答案 0 :(得分:3)
因为在将值设置为null之前,您将从函数返回。执行返回后,当前函数不会执行任何其他操作,并且控制权将返回给调用者函数。
答案 1 :(得分:2)
您尝试做的事情是不可能的。相反,将引用缓存到this.books[i]
。
if (this.books[i].getTitle().equals(title)) {
Book book = this.books[i]; // cache the reference
this.books[i] = null;
return book;
}
答案 2 :(得分:0)
返回后,您无法正常运行语句。您需要将值存储在临时变量中:
Book result = this.books[i];
this.books[i] = null;
return result;
或者,您可以在try
块中返回并在finally
内将其设置为null:
try {
return this.books[i];
} finally {
this.books[i] = null;
}
但我觉得这对你的用例来说有点矫枉过正。