1

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

在此处输入图像描述

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

以下是最接近的:

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

2 回答 2

2

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

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

jshell --start DEFAULT --start PRINTING

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

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

于 2017-08-30T21:43:21.317 回答
1

它看起来像是 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/

于 2016-11-24T15:48:03.433 回答