为什么以及如何使用JShell?

时间:2017-10-27 18:38:46

标签: java read-eval-print-loop java-9 jshell

我经历了几个关于JShell的教程,我仍然不了解最重要的部分:为什么我甚至会使用JShell?

这就是Oracle所说的:

  

"您可以测试单个语句,尝试不同的a变体   方法,并在JShell中使用不熟悉的API进行实验   会话"

是的,很棒,但对于所有这些事情,我可以使用IDE。我明白,REPL应该能够更快地进行代码评估。但是,在带有Sysout的虚拟Hello World项目中在IDE中测试一段代码肯定不会慢一些?

事实上,IDE提供自动完成功能,及早发现错误,我可以通过鼠标点击检查方法/类的实现。这一切都应该在IDE中比在JShell中更快地进行代码测试吗?

我错过了什么? 有人可以给我一些用例,使用JShell比使用IDE更好吗? 你们是如何使用JShell的?

1 个答案:

答案 0 :(得分:4)

虽然我真的鼓励你继续阅读The Java Shell动机和目标。

然而,稍微动手回答你的问题,我真的很高兴知道你在IDE上尝试这个时所采取的步骤和程序。所以,只有少数,你去: -

1。我最近知道Java 9引入了重载的方便工厂收集方法,然后很好奇他们做了什么以及如何使用它们。

步骤

-> Type 'jshell' on command prompt (assuming JAVA_HOME is set to JDK9's bin)
-> Type 'List.o'
-> Press Tab (completes the `of`) 
-> Tab displays all signatures 
-> Tab starts reading the documentation from first

enter image description here

2. 如何保持代码的语法?如果您在上面的图像中注意到List的初始化甚至不关心存储它的变量,终止分号等。

3。您能多快找出您要实施的某些代码抛出的异常?所以,这里的一个用例,我想创建一个Map的String(水果名称)到String(它们的颜色),然后在后面的阶段添加更多的水果,并省略我的那些颜色不确定。然后最终获得所有那些红色水果的清单。当然,既然我现在正在学习Java 9,我会尝试使用与Java9一样多的API。

enter image description here

虽然您会尝试在IDE中添加所有这些(^^)代码,但您可以自己注意到最终需要花时间来实现 Immutable Map Static Factory Methods. <的所有特性/ p>

PS

  • Robert有presented Jshell here,详细说明了JShell的有效性。

  • 正如您所做的所有上述操作一样,请记住,Jshell不是IDE的目标。

  • 通常,所有这一切都通过绕过“代码 - &gt;编译 - &gt;执行”循环的编译阶段对语言进行简单的实验。