JShell:Java REPL综合指南(2)

注意,你不必使用完整限定类名(FQCN)来引用ArrayList,也不必import java.util包。这是因为,在默认情况下,JShell启动时会自动执行一些预定义导入,减少导入常用包或输入FQCN的麻烦。

下面是默认导入的包:

java.io.*

java.math.*

java.net.*

java.nio.file.*

java.util.*

java.util.concurrent.*

java.util.function.*

java.util.prefs.*

java.util.regex.*

java.util.stream.*

正如你所料,你也可以根据需要输入import <pkg_name>定义自己的导入,其中<pkg_name>是类路径上一个有效的软件包。

方法

现在,让我们定义一个方法getRandomAudience,用于随机选取一名听众。该方法接收一个听众列表(List<String>),随机返回列表中的一名听众。你可以直接在命令行中定义方法,就像你在类中定义方法一样,不过,你不需要定义一个类!

jshell> public String getRandomAudience(List<String> audiences) { ...> return audiences.get(new Random().nextInt(audiences.size())); ...> } | created method getRandomAudience(List<String>)

如果一切顺利,JShell会显示方法已经成功创建,可以使用了。

让我们尝试调用这个方法,并传递听众列表。多调用几次,确保每次获得不同的结果。

jshell> getRandomAudience(audiences) $7 ==> "world" jshell> getRandomAudience(audiences) $8 ==> "universe" jshell> getRandomAudience(audiences) $9 ==> "galaxy"

这里有一件很有趣的事需要注意,在方法体中,你可以引用之前定义的任何变量和尚未定义的变量(稍后会详细介绍)。

让我们创建getRandomAudience方法的另外一个版本,它不接收参数,直接在方法体内使用我们的听众列表。

jshell> public String getRandomAudience() { ...> return audiences.get(new Random().nextInt(audiences.size())); ...> } | created method getRandomAudience()

再次执行几遍。

jshell> getRandomAudience() $10 ==> "galaxy" jshell> getRandomAudience() $11 ==> "world" jshell> getRandomAudience() $12 ==> "galaxy"

我上面提到过,方法还可以使用尚未定义的变量。让我们定义一个名为getSeparator的新方法,返回一个可以用来分隔单词的值。不过,这一次,我们将使用一个未定义的变量wordSeparator。

jshell> public String getSeparator() { ...> return wordSeparator; ...> } | created method getSeparator(), however, it cannot be invoked until variable wordSeparator is declared

注意,JShell创建了getSeparator方法, 但告诉我们,在我们声明或定义wordSeparator变量之前,该方法不能使用。任何调用它的尝试都会产生一条类似的错误信息。

jshell> getSeparator() | attempted to call method getSeparator() which cannot be invoked until variable wordSeparator is declared

把变量wordSeparator简单地定义成一个空格,再次尝试调用它。

jshell> var wordSeparator = " " wordSeparator ==> " " jshell> getSeparator() $13 ==> " "

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/7c3c84b6ca84b4524bd9151d1c783757.html