gpt4 book ai didi

java - PrintStream对象out被初始化为null,我们如何调用它的方法呢?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:12:01 25 4
gpt4 key购买 nike

我在System看到过out 的类对象(类型 PrintStream )用 null 初始化值(value)。我们如何调用像System.out.prinln("");这样的方法? ?在 System 类中,out 变量以这种方式初始化:

package java.lang;

public final class System {
public final static PrintStream out = nullPrintStream();

private static PrintStream nullPrintStream() throws NullPointerException {
if (currentTimeMillis() > 0) {
return null;
}
throw new NullPointerException();
}
}

如上代码所示out由 null 初始化的变量,并且这个变量是最终的,所以它不能进一步初始化,那么我们如何使用“out”变量。

最佳答案

JVM 调用 private static void initializeSystemClass()初始化它的方法。

看这两行代码:

setOut0(new PrintStream(new BufferedOutputStream(fdOut, 128), true));
setErr0(new PrintStream(new BufferedOutputStream(fdErr, 128), true));

这是两个本地方法:

private static native void setOut0(PrintStream out);
private static native void setErr0(PrintStream err);

有一个nice article on it .

关于java - PrintStream对象out被初始化为null,我们如何调用它的方法呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17989275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com