JDK 9 jshell printf() 特殊处理?
JDK 9 jshell printf() special treatment?
我一直在研究 JDK9,我注意到在 jshell 中你不必在 printf() 前加上 System.out.printf( ) 即你可以写 printf("test") 但你不能写 println("test")
这是jshell独有的功能吗?如何在应用程序中实现相同的行为?
以下是最接近的:
import static java.lang.System.out ;
out.println("test");
out.printf("test");
看起来 printf
是 JShell 中的命令,但 println
不是(就像在 bash shell 中一样)。 System.out
使用的 printf()
方法与 jshell 使用的方法不同,因此不能在 java 应用程序中静态导入。
来源:
http://jakubdziworski.github.io/java/2016/07/31/jshell-getting-started-examples.html
https://jshelltutorial.com/jshells-printf-method/
在早期版本的抢先体验中,有一个预定义的 printf 方法重定向到 System.out.printf。这有两个问题:它不是标准的 Java 并且正如其他答案中所指出的那样,它与未定义 print 和 println 不一致。
在当前的抢先体验和即将发布的内容中,没有自动定义的打印方法。如果你想要这个,用以下命令启动 jshell:
jshell --start DEFAULT --start PRINTING
里面会给你一套完整的打印方法
回答第二部分问题,如上启动后使用/method命令可以看到重定向方法的定义。将这些添加到 class 会给你访问权限——但它很难看。或者,您可以在 class 中创建它们 public 静态方法,然后导入它们。
我一直在研究 JDK9,我注意到在 jshell 中你不必在 printf() 前加上 System.out.printf( ) 即你可以写 printf("test") 但你不能写 println("test")
这是jshell独有的功能吗?如何在应用程序中实现相同的行为?
以下是最接近的:
import static java.lang.System.out ;
out.println("test");
out.printf("test");
看起来 printf
是 JShell 中的命令,但 println
不是(就像在 bash shell 中一样)。 System.out
使用的 printf()
方法与 jshell 使用的方法不同,因此不能在 java 应用程序中静态导入。
来源:
http://jakubdziworski.github.io/java/2016/07/31/jshell-getting-started-examples.html https://jshelltutorial.com/jshells-printf-method/
在早期版本的抢先体验中,有一个预定义的 printf 方法重定向到 System.out.printf。这有两个问题:它不是标准的 Java 并且正如其他答案中所指出的那样,它与未定义 print 和 println 不一致。
在当前的抢先体验和即将发布的内容中,没有自动定义的打印方法。如果你想要这个,用以下命令启动 jshell:
jshell --start DEFAULT --start PRINTING
里面会给你一套完整的打印方法
回答第二部分问题,如上启动后使用/method命令可以看到重定向方法的定义。将这些添加到 class 会给你访问权限——但它很难看。或者,您可以在 class 中创建它们 public 静态方法,然后导入它们。