JShell เป็นเครื่องมือเชิงโต้ตอบที่ใช้ในการสร้างนิพจน์ตัวอย่าง เราสามารถใช้ JShell โดยทางโปรแกรมได้โดยใช้ JavaFX แอปพลิเคชัน เราจำเป็นต้องนำเข้าแพ็คเกจสองสามตัวในโปรแกรมจาวาที่แสดงด้านล่าง
import jdk.jshell.JShell; import jdk.jshell.SnippetEvent; import jdk.jshell.VarSnippet;
ในตัวอย่างด้านล่าง ใช้งานตัวอย่างแอปพลิเคชัน Java FX เราจะป้อนค่าต่างๆ ในช่องข้อความ และกดปุ่ม "ประเมิน ปุ่ม " จะแสดงค่าพร้อมประเภทข้อมูลที่สอดคล้องกันในรายการ
ตัวอย่าง
import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.*; import javafx.scene.layout.*; import javafx.stage.Stage; import java.util.List; import jdk.jshell.JShell; import jdk.jshell.SnippetEvent; import jdk.jshell.VarSnippet; public class JShellFXTest extends Application { @Override public void start(Stage primaryStage) throws Exception { JShell shell = JShell.builder().build(); TextField textField = new TextField(); Button evalButton = new Button("eval"); ListView<String> listView = new ListView<>(); evalButton.setOnAction(e -> { List<SnippetEvent> events = shell.eval(textField.getText()); events.stream().map(event -> convert(event)).filter(s -> s != null).forEach(s -> listView.getItems().add(s)); }); BorderPane pane = new BorderPane(); pane.setTop(new HBox(textField, evalButton)); pane.setCenter(listView); Scene scene = new Scene(pane); primaryStage.setScene(scene); primaryStage.show(); } public static String convert(SnippetEvent e) { if(e.snippet() instanceof VarSnippet) { return ((VarSnippet) e.snippet()).typeName() + " " + ((VarSnippet) e.snippet()).name() + " " + e.value(); } return null; } public static void main(String[] args) { launch(); } }
ผลลัพธ์