java.lang.System

java.lang.System这个系统类里有这么一段代码:

public final static PrintStream out = null;

 但为什么我们执行System.out.println()时并不报NPE呢。原来是final只是防止了用户把out属性替换成其他的对象,但是System内部实现用了setOut0()这个native方法,这样就能规避final的限制,把out属性设置成所需的对象。

你可能感兴趣的:(System)