Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java 9에서 REPL의 다른 상태 상태는 무엇입니까?

<시간/>

REPL 읽기-평가-인쇄-루프를 나타냅니다. . 일부 상태를 보유하고 JShell의 각 명령문에는 상태가 있습니다. 이 상태는 스니펫 상태 실행을 거부합니다. 및 변수. eval()의 결과에 의해 결정될 수 있습니다. JShell 메소드 코드를 평가하는 인스턴스입니다.

아래에는 7가지 상태가 나열되어 있습니다.

  • 삭제됨 :스니펫이 비활성화되었습니다.
  • 존재하지 않음 :스니펫이 아직 존재하지 않아 비활성화되었습니다.
  • 덮어쓰기 :스니펫이 새 스니펫으로 교체되어 비활성화되었습니다.
  • RECOVERABLE_DEFINED :스니펫은 본문에 잠재적으로 복구 가능한 미해결 참조 또는 기타 문제가 있는 선언 스니펫입니다.
  • RECOVERABLE_NOT_DEFINED :스니펫은 잠재적으로 복구 가능한 미해결 참조 또는 기타 문제가 있는 선언 스니펫입니다.
  • 거부됨 :초기 평가 시 컴파일이 실패하고 JShell 상태에 대한 추가 변경으로 인해 유효하지 않기 때문에 스니펫이 비활성화되었습니다.
  • 유효 :스니펫은 유효한 스니펫입니다.

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