Java-为什么我不能在返回后将数组中的值设置为null?

时间:2018-06-13 21:49:16

标签: java

我正从数组中返回一个值,但我希望之后将该值设置为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;
}

3 个答案:

答案 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;
}

但我觉得这对你的用例来说有点矫枉过正。