我一直在研究JDK9,我注意到在jshell中你没有必须用 System.out.printf()加上 printf()前缀,即你可写 printf(“test”),但你不能写 println(“test”)
这只是jshell的一个功能吗?如何在应用程序中实现相同的行为?
以下是最接近的:
import static java.lang.System.out ;
out.println("test");
out.printf("test");
答案 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没有定义是不一致的。
在当前的早期访问和将要发布的内容中,没有自动定义的打印方法。如果你想要这个,请用:
启动jshelljshell --start DEFAULT --start PRINTING
这将为您提供完整的打印方法。
要回答问题的第二部分,您可以在如上所述启动后使用/ method命令查看重定向方法的定义。将这些添加到一个类可以让你访问 - 但它非常难看。或者,您可以在类中创建它们的公共静态方法,然后导入它们。