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

钩入System.out.println(); 和修改

西门旻
2023-03-14
问题内容

我想修改输出的输出System.out.println();。这怎么可能?可能-我已经在Bukkit /
Craftbukkit中看到了。如果插件正在使用System.out.println(String
string)打印字符串;Bukkit将时间/日期和记录状态添加到字符串中。我想像Bukkit一样。


问题答案:

您可以更改PrintStream用作标准输出的:

System.setOut(PrintStream输出)

创建您自己的PrintStream实现,该实现将您想要的任何其他信息打印到(旧)标准输出,并使用以下命令进行设置:

System.setOut(myStream);

例:

以下示例在String使用PrintStream.println(String x)方法打印的每次打印之前打印当前时间毫秒:

PrintStream myStream = new PrintStream(System.out) {
    @Override
    public void println(String x) {
        super.println(System.currentTimeMillis() + ": " + x);
    }
};
System.setOut(myStream);
System.out.println("Hello World!");

输出:

1420553422337: Hello World!

注意:

示例仅覆盖该PrintStream.println(String x)方法,因此调用其他打印方法PrintStream不会将时间戳添加到输出中。



 类似资料:
  • 问题内容: 和之间的技术区别到底是什么?我知道这会写入标准输出,但这与控制台不同吗? 我不完全理解的文档进行。 问题答案: 以下是使用/ / 和之间的主要区别: 如果您的应用程序未在终端中运行,则返回null(尽管您可以在应用程序中处理此问题) 提供读取密码而不回显字符的方法 并使用默认平台编码,而类输出方法使用控制台编码 后一种行为可能不会立即显而易见,但是像这样的代码可以证明区别: 在我的Wi

  • 问题内容: 首先感到遗憾的是,如果这是一个非常基本的问题,我建议我仍然是代码猴子。我在一次采访中被要求阐明System.out.println(); 我解释了以下方式 我已经解释说System.out是有效的,因为这是我们在Java中访问静态变量的方式,而out是PrintStream的对象,因此我们可以访问其方法。 他要求我模拟一个类似的程序,我跟踪了它,但是它没有用,因为System.out返

  • 编辑:许多人对这个问题感到困惑。上限的使用只是为了创建这个示例。我知道这是不正确的。问题是,如果反编译上面的代码,您将看到编译器将t.getTheString(implclass.class)结果类型转换为String,因为它可能不确定类型。我的问题是,如果它是典型的反对会不会更好。在这种情况下,它将调用toString()方法,代码将正常工作。这是Java编译器的问题还是我在这里遗漏了什么?

  • 我是编程新手,我们从学校得到了一个例子来了解扫描仪是如何工作的。我的问题是,我不明白为什么消息“Input”(while循环中的System.out.println)会被打印两次。

  • 问题内容: 可能是一个新手问题,但每个人似乎都在使用,但在处理异常时我一直都在使用。有什么区别,为什么更可取? 问题答案: 所使用的输出流与@Brian指出的输出流不同,但是详细程度也不相同-您可以尝试以下简单测试。输出: With :您只知道抛出了什么异常 java.lang.UnsupportedOperationException:尚未实现 使用:您还知道是什么原因造成的 (行号+调用堆栈)

  • 钩子和行为 ThinkPHP中的行为是一个比较抽象的概念,你可以把行为想象成在应用执行过程中的一个动作。在框架的执行流程中,例如路由检测是一个行为,静态缓存是一个行为,用户权限检测也是行为,大到业务逻辑,小到浏览器检测、多语言检测等等都可以当做是一个行为,甚至说你希望给你的网站用户的第一次访问弹出Hello,world!这些都可以看成是一种行为,把这些行为抽离出来的目的是为了让你无需改动框架和应用