当前位置: 首页 > 面试题库 >

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

左丘耀
2023-03-14
问题内容

我在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”变量。


问题答案:

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

有一篇不错的文章。



 类似资料:
  • 我正在使用mockito作为junit。在创建对象的模拟时,我有疑问。我有一个名为DBConnect的类。我需要数据库属性,如dbname、凭据等。PatientDetails使用这个类。现在,当我为PatientDetails编写junit时。所以我使用以下代码。 用这个我不能得到正确的结果。

  • 问题内容: 我在用Java工作。 我通常会这样设置一些对象: 问题是:在此示例中是否等于,按原样我可以假定对未初始化的对象进行空检查将是准确的? 问题答案: 正确,未显式初始化的引用类型的静态成员和实例成员都由Java 设置为。相同的规则适用于数组成员。 根据Java语言规范的第4.12.5节: 变量的初始值 程序中的每个变量在使用值之前都必须具有一个值: 每个类变量,实例变量或数组组件在创建时均

  • 问题内容: 我正处于“操作方法”阶段,想知道服务器启动时是否有一种方法可以调用。 这将类似于Web应用程序,当我将托管bean与一起使用时:启动容器时,将对带注释的类进行实例化,并且可以从其构造函数中调用所需的任何东西。 有什么帮助吗? 问题答案: 因此,如果您用于服务请求,则可以创建,如果已经部署了应用程序,则在部署或服务器启动时将调用方法。 为此,创建将实现的类: 然后在您的中定义该监听器:

  • 问题内容: 我从AJAX调用REST服务器收到一个JSON对象。该对象具有与我的TypeScript类匹配的属性名称 初始化它的最佳方法是什么?我认为这行不通,因为类(和JSON对象)具有作为对象列表的成员和作为类的成员,而这些类具有作为列表和/或类的成员。 但是我更喜欢一种查找成员名称并在其间进行分配,创建列表并根据需要实例化类的方法,因此,我不必为每个类中的每个成员编写明确的代码(有很多!)

  • 问题内容: 我只是看了这个SO Post: 但是,哥伦比亚大学教授的笔记按以下方式进行。请参阅第9页。 哪种方法正确?他们似乎在说不同的话。 特别是在注释版本中没有。 问题答案: 这根本不会在Java中编译(因为您正在将数组类型的值分配给非数组类型的变量): 被以下错误拒绝(另请参见:http : //ideone.com/0jh9YE): 要进行编译,请声明其类型,然后在其上循环:

  • 目前,我想为我的系统创建一个集成测试。我正在使用testcontainers生成我的临时数据库实例,并使用R2DBC数据库使我的系统具有反应性。问题是我不知道如何在R2DBC testcontainer实例中创建模式,在testcontainers网页中R2DBC支持和JDBC支持的文档中有明显的区别。在JDBC中,有一节在我们替换JDBC URL后创建模式,同时在R2DBC中,没有提到在我们替换