【发布时间】:2012-07-19 18:22:48
【问题描述】:
Java 中的static 成员(static 字段或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 main = null; main.getNull().value。 -
这让我想起了
new Thread[]{}[-1].sleep(10);,其中 sleep() 是一个静态方法。这曾经在一些较旧的 Java 版本上成功。