public class ObjTest implements Consumer<Object> { @Override public void accept(Object o) { System.out.println("o = " + o.toString()); } public static void main(String[] args) { new ObjTest().accept(new Object()); } } 上面代码运行到o.toString()报NullPointerException, 原因可能是什么呢?
时间: 2024-04-13 18:30:00 浏览: 17
在上述代码中,当调用`o.toString()`时,出现了空指针异常(NullPointerException)。这是因为`Object`类的`toString()`方法是一个非静态方法,需要在一个非空对象上调用。然而,在`accept`方法中,我们将一个新创建的`Object`对象作为参数传入,但是这个对象并没有被正确初始化。
要解决这个问题,你可以确保传入的参数不为空,或者在调用`toString()`方法之前进行空值检查。例如,可以在`accept`方法中添加以下代码来处理空值情况:
```java
@Override
public void accept(Object o) {
if (o != null) {
System.out.println("o = " + o.toString());
} else {
System.out.println("o is null");
}
}
```
这样,在传入空值时,将打印出"o is null",而不会抛出空指针异常。