static Java中的成员(static字段或static方法)与它们各自的类相关联,而不是与此类的对象相关联。以下代码尝试访问null引用上的静态字段。
static
null
public class Main { private static final int value = 10; public Main getNull() { return null; } public static void main(String[] args) { Main main=new Main(); System.out.println("value = "+main.getNull().value); } }
尽管main.getNull()返回null,但它可以工作并显示value = 10。此代码如何工作?
main.getNull()
value = 10
该行为在Java语言规范中指定:
空引用可用于访问类(静态)变量而不会引起异常。
更详细地讲,进行静态场评估,例如Primary.staticField以下工作(重点是我的工作)-在您的情况下Primary = main.getNull():
Primary.staticField
Primary = main.getNull()