JDK 9 jshell printf()特殊处理?

时间:2016-11-24 15:01:00

标签: java printf jshell

我一直在研究JDK9,我注意到在jshell中你没有必须用 System.out.printf()加上 printf()前缀,即你可写 printf(“test”),但你不能写 println(“test”)

enter image description here

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

以下是最接近的:

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

2 个答案:

答案 0 :(得分:1)

Iit看起来像printf是JShell中的命令,但println不是(就像在bash shell中一样)。 printf()使用的System.out方法与jshell使用的方法不同,因此无法在Java应用程序中静态导入。

来源:

http://jakubdziworski.github.io/java/2016/07/31/jshell-getting-started-examples.html https://jshelltutorial.com/jshells-printf-method/

答案 1 :(得分:1)

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

在当前的早期访问和将要发布的内容中,没有自动定义的打印方法。如果你想要这个,请用:

启动jshell
jshell --start DEFAULT --start PRINTING

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

要回答问题的第二部分,您可以在如上所述启动后使用/ method命令查看重定向方法的定义。将这些添加到一个类可以让你访问 - 但它非常难看。或者,您可以在类中创建它们的公共静态方法,然后导入它们。