我一直在研究 JDK9,我注意到在 jshell 中你不必在printf()前加上System.out.printf()即你可以写printf("test")但你不能写println("测试”)
这只是 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 命令查看重定向方法的定义。将这些添加到一个类中可以让您访问——但它非常难看。或者,您可以将它们设为类中的公共静态方法,然后导入它们。
它看起来像是 JShellprintf
中的命令,但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/