Java 9 的 JShell 中什么是前向引用?


JShell 是一个命令行工具,允许我们输入 Java 语句(简单语句、复合语句,甚至是完整的 方法和类),对其进行评估并打印结果。

前向引用是指引用我们尚未在 JShell 中键入的任何代码中的方法变量的命令。由于代码在 JShell 中顺序输入和评估,这些前向引用暂时未解析。JShell 支持在方法体返回类型参数类型变量类型类内部使用前向引用。

在下面的代码片段中,我们在 Jshell 中创建了一个方法forwardReference()。在声明变量之前,无法调用此方法。如果尝试调用此方法,则会显示警告消息:“尝试调用方法 forwardReference(),但在声明变量 notYetDeclared 之前无法调用

C:\Users\User>jshell
| Welcome to JShell -- Version 9.0.4
| For an introduction type: /help intro

jshell> void forwardReference() {
...>       System.out.println(notYetDeclared);
...>    }
| created method forwardReference(), however, it cannot be invoked until variable notYetDeclared is declared

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


在下面的代码片段中,我们声明了返回字符串的“notYetDeclared”变量。最后,如果我们在 JShell 中调用forwardReference(),则会打印“变量已声明”

jshell> String notYetDeclared = "variable is declared"
notYetDeclared ==> "variable is declared"

jshell> forwardReference()
variable is declared

更新于:2020年3月5日

254 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告