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  

更新於: 2020年4月2日

199 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.