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