如何在Java 9的JShell中显示不同的列表命令?
JShell 是Java9中引入的,它是一个命令行工具,它使我们可以输入简单的语句,表达式,方法和类而无需main()方法。
当我们可以在JShell中输入代码时,该代码已分配了唯一的ID。该ID从1开始,并针对在JShell中输入的每个命令递增。启动时加载的库也是如此。对于每个导入,都分配了唯一的ID。它以$1开头,并随所加载的每个代码($2,$3等)递增。有一个内部命令可以列出所有已加载的代码,以及在会话期间输入的所有代码,然后使用“/list”命令。
/list /list [ID] /list [Code_Name] /list -start /list -all
/list: 此命令显示当前会话中输入的所有活动代码(不包括JShell启动时加载的代码)。
/list[ID]:此命令显示与输入的ID对应的源代码。
/list[Code_Name]:显示与输入名称相对应的源代码。
/list-start:此命令显示JShell启动时加载的所有代码。启动会话时,将显示默认情况下预加载的所有导入,并可能显示您自己要预加载的代码(这一点将在“自定义JShell开始”一章的第三部分中进行说明)。
/list-all:此命令列出在JShell会话期间输入的所有活动,非活动,错误和预加载的代码。
在下面的代码片段中,我们可以使用“/list-all”命令列出所有输入的导入,表达式等。
jshell> /imports | import java.io.* | import java.math.* | import java.net.* | import java.nio.file.* | import java.util.* | import java.util.concurrent.* | import java.util.function.* | import java.util.prefs.* | import java.util.regex.* | import java.util.stream.* jshell> LocalDate localDate = LocalDate.of(2020, 04, 10) | Error: | cannot find symbol | symbol: class LocalDate | LocalDate localDate = LocalDate.of(2020, 04, 10); | ^-------^ | Error: | cannot find symbol | symbol: variable LocalDate | LocalDate localDate = LocalDate.of(2020, 04, 10); | ^-------^ jshell> int x = 10 x ==> 10 jshell> public enum Operate { ...> ADDITION, ...> DIVISION; ...> } | created enum Operate jshell> /list -all s1 : import java.io.*; s2 : import java.math.*; s3 : import java.net.*; s4 : import java.nio.file.*; s5 : import java.util.*; s6 : import java.util.concurrent.*; s7 : import java.util.function.*; s8 : import java.util.prefs.*; s9 : import java.util.regex.*; s10 : import java.util.stream.*; e1 : LocalDate localDate = LocalDate.of(2020, 04, 10); 1 : int x = 10; 2 : public enum Operate { ADDITION, DIVISION; }
在下面的代码片段中,我们可以使用相同的名称来命名变量,方法甚至类型。然后,我们可以使用“/list”命令显示此名称与相应类型的不同出现。
jshell> int x = 10 x ==> 10 jshell> public int x(int y) { ...> return y; ...> } | created method x(int) jshell> public long x(long y, long z) { ...> return y + z; ...> } | created method x(long,long) jshell> /list x 1 : int x = 10; 2 : public int x(int y) { return y; } 3 : public long x(long y, long z) { return y + z; }