System对象可能抛出空指针异常的场景是什么?

Bud*_*Kis 1 java nullpointerexception

我正在准备面试,当我经历空指针异常时,我突然意识到每个对象都能以某种方式抛出空指针异常,但我似乎无法想象某些对象如System,Out等抛出NullPointerException.谁能提到这样的场景?谢谢!

例如: System.out.println(s.get(name));

Sot*_*lis 8

首先,System不是一个对象.它是一个方法是静态的类.其次,out是该类的静态字段(最初)是对标准输出的引用PrintStream.您可以将其更改PrintStream为您自己的System.setOut(PrintStream).

最后,如果你这样做了

System.setOut(null);
System.out.println("42"); // because out is now a null reference 
Run Code Online (Sandbox Code Playgroud)

你会得到一个NullPointerException.

当然,你可以找到一个方法System抛出一个NullPointerException为好.

NullPointerException当您尝试取消引用null对象引用时,JVM会抛出大多数这些内容.

你没有取消引用一个类.

只有可执行代码才能抛出NPE,例如方法,构造函数或初始化程序. - 马可

  • 当我发错了一个时写+1正确的答案:) (3认同)