class CardBoard { Short story = 5; CardBoard go(CardBoard cb) { cb = null; return cb; } public static void main(String[] args) { CardBoard c1 = new CardBoard(); CardBoard c2 = new CardBoard(); CardBoard c3 = c1.go(c2); c1 = null; // do Stuff } }
时间: 2023-08-30 11:12:23 浏览: 177
这段代码存在一个小问题。在`go()`方法中,将`cb`置为`null`后,返回了`cb`,即返回了一个`null`对象。在`main()`方法中,将`c1`置为`null`后,其实并不会对程序的执行结果产生影响,因为在之前已经将`c3`指向了一个`null`对象,所以在`// do Stuff`处对`c1`的操作并不会引发`NullPointerException`异常。
如果想要修改这段代码,使得在`// do Stuff`处对`c1`的操作不会引发异常,可以将`go()`方法中的返回值类型改为`void`,并在方法中直接将参数`cb`置为`null`。修改后的代码如下:
```
class CardBoard {
Short story = 5;
void go(CardBoard cb) {
cb = null;
}
public static void main(String[] args) {
CardBoard c1 = new CardBoard();
CardBoard c2 = new CardBoard();
c1.go(c2);
c1 = null;
// do Stuff
}
}
```
这样就可以避免`NullPointerException`异常的发生了。
阅读全文