Java 9 中 REPL 的不同状态是什么?
REPL 代表 Read-Evaluate-Print-Loop(读取-求值-打印-循环)。它包含一些状态,JShell 中的每个语句都有一个状态。此状态会拒绝代码片段和变量的执行状态。这可以通过JShell 实例的eval() 方法的结果来确定,该方法会评估代码。
下面列出了七个不同的状态。
- DROPPED:代码片段处于非活动状态。
- NONEXISTENT:代码片段处于非活动状态,因为它尚不存在。
- OVERWRITTEN:代码片段处于非活动状态,因为它已被新的代码片段替换。
- RECOVERABLE_DEFINED:代码片段是声明代码片段,其主体中可能存在可恢复的未解析引用或其他问题。
- RECOVERABLE_NOT_DEFINED:代码片段是声明代码片段,可能存在可恢复的未解析引用或其他问题。
- REJECTED:代码片段处于非活动状态,因为编译在初始评估时失败,并且无法通过进一步更改 JShell 状态而变得有效。
- VALID:代码片段是有效的代码片段。
示例
import java.util.List;
import jdk.jshell.*;
import jdk.jshell.Snippet.Status;
public class JShellTest {
public static void main(String args[]) {
JShell shell = JShell.create();
List<SnippetEvent> events = shell.eval("int a, b, sum; " + "a = 12; b = 11; sum = a + b; " +
"System.out.println(sum);" );
for(SnippetEvent event : events) {
Snippet snippet = event.snippet();
Snippet.Status snippetstatus = shell.status(snippet);
if(snippetstatus == Status.VALID) {
System.out.println("Successfully executed");
}
}
}
}输出
Successfully executed Successfully executed Successfully executed
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP