java - JDK 9 jshell printf() 特殊处理?

标签 java printf jshell

我一直在研究 JDK9,我注意到在 jshell 中你不必在 printf() 前面加上 System.out.printf() 即你可以写 printf("test") 但不能写 println("test")

enter image description here

这是jshell独有的功能吗?如何在应用程序中实现相同的行为?

以下是最接近的:

import static java.lang.System.out ;
out.println("test");
out.printf("test");

最佳答案

在早期访问的早期版本中,有一个预定义的 printf 方法,该方法会重定向到 System.out.printf。这有两个问题:它不是标准的 Java,并且正如其他答案中指出的那样,它不一致,因为 print 和 println 没有定义。

在当前的抢先体验版和即将发布的版本中,没有自动定义打印方法。如果您想要这个,请使用以下命令启动 jshell:

jshell --start DEFAULT --start PRINTING

这将为您提供完整的打印方法集。

要回答问题的第二部分,您可以在如上启动后使用/method 命令查看重定向方法的定义。将它们添加到类中将使您能够访问 - 但它非常丑陋。或者,您可以将它们设置为类中的公共(public)静态方法,然后导入它们。

关于java - JDK 9 jshell printf() 特殊处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40789533/

相关文章:

java - filter和findFirst后map抛出异常需要继续过滤Java流

java - 无法让 android webview 在 android 9 上打开文件选择器

值跳跃的Java for循环

c - 在c中添加到字符串末尾的额外字符

linux - 如何使用变量格式存储 printf 的输出?

java - 用于行首和行尾的 JShell 快捷方式

java - 安卓内存泄漏?导航SDK无法正常工作

c - 使用 dup2 重定向 printf 失败

java - 如何在jshell中使用Lombok?

java - JShell <Shift+tab i> 在 jdk 9 中无法正常工作