public class Main
{
   public static void main(String []ar)
   {
      A m = new A();
      System.out.println(m.getNull().getValue());
   }
}

class A
{
   A getNull()
   {
      return null;
   }

   static int getValue()
   {
      return 1;
   }
}

我在SCJP书中遇到了这个问题。该代码将打印出1而不是预期的NPE。有人可以解释原因吗?

最佳答案

它按照Java Language Specification的方式运行:

09-05 12:41