REPL là viết tắt của Read-Evaluate-Print-Loop. Nó giữ một số trạng thái, và mỗi câu lệnh trong JShell có một trạng thái. Trạng thái này chỉ ra trạng thái thực thi của snippet và biến. Nó có thể xác định bởi kết quả của phương thức eval() của instance JShell, đánh giá mã.
Có bảy trạng thái trạng thái khác nhau như sau:
- DROPPED: Snippet không hoạt động.
- NONEXISTENT: Snippet không hoạt động vì nó chưa tồn tại.
- OVERWRITTEN: Snippet không hoạt động vì đã bị thay thế bằng snippet mới.
- RECOVERABLE_DEFINED: Snippet là khai báo với tham chiếu chưa giải quyết có thể khôi phục hoặc vấn đề khác trong thân hàm.
- RECOVERABLE_NOT_DEFINED: Snippet là khai báo với tham chiếu chưa giải quyết có thể khôi phục hoặc vấn đề khác.
- REJECTED: Snippet không hoạt động vì biên dịch thất bại khi đánh giá ban đầu và không thể trở nên hợp lệ với thêm thay đổi trạng thái JShell.
- VALID: Snippet là snippet hợp lệ.
Ví dụ
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("Thực thi thành công");
}
}
}
}
Kết quả
Thực thi thành công
Thực thi thành công
Thực thi thành công