微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PrintStream对象出来是由null初始化的,我们如何在其上调用方法?

如何解决PrintStream对象出来是由null初始化的,我们如何在其上调用方法?

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);

有一篇不错的文章

解决方法

我在System该类中看到,该out对象(类型为PrintStream)已用一个null值初始化。我们该如何调用like方法
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”变量。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。