- すべての実装されたインタフェース:
- AutoCloseable
public class JShell extends Object implements AutoCloseable
JShellインスタンスは、進化するコンパイルと実行状態を保持します。 状態は、インスタンス・メソッドeval(String)、drop(Snippet)、およびaddToClasspath(String)を使用して変更されます。 メソッドの大半は状態を問合せします。 JShellインスタンスは、onSnippetEvent(Consumer)とonShutdown(Consumer)でイベントを登録することもできます。unsubscribe(Subscription)で登録解除されています。 ソース分析ユーティリティへのアクセスはsourceCodeAnalysis()を介して行います。 完了したら、インスタンスを閉じてリソースを解放する必要があります-- close()。 
 
 JShellのインスタンスがJShell.create()で作成されます。
 
このクラスはスレッド・セーフではありませんが、特に明記されている場合を除き、すべてのアクセスは1つのスレッドで行う必要があります。
- 導入されたバージョン:
- 9
- 
ネストされたクラスのサマリーネストされたクラス 修飾子と型 クラス 説明 static classJShell.BuilderJShellインスタンスのビルダー。classJShell.Subscriptionサブスクリプションとは、サブスクリプションを参照するためのトークンであり、unsubscribedとすることができます。
- 
メソッドのサマリー修飾子と型 メソッド 説明 voidaddToClasspath(String path)指定されたパスは、eval()で使用されるクラスパスの末尾に追加されます。static JShell.Builderbuilder()JShell.Builderのファクトリ・メソッドで、JShellのインスタンスを作成するために使用されます。voidclose()この状態エンジンを閉じます。static JShellcreate()新しいJShell状態エンジンを作成します。Stream<Diag>diagnostics(Snippet snippet)スニペットの最新評価の診断を返します。List<SnippetEvent>drop(Snippet snippet)ステートから宣言を削除します。List<SnippetEvent>eval(String input)該当する場合、定義および/または実行を含む入力文字列を評価します。Stream<ImportSnippet>imports()アクティブなインポート・スニペットを返します。Stream<MethodSnippet>methods()アクティブなメソッド・スニペットを返します。JShell.SubscriptiononShutdown(Consumer<JShell> listener)このJShellインスタンスが終了するときに呼び出されるコールバックを登録します。JShell.SubscriptiononSnippetEvent(Consumer<SnippetEvent> listener)スニペットのステータスが変更されたときに呼び出されるコールバックを登録します。Stream<Snippet>snippets()すべてのスニペットを返します。SourceCodeAnalysissourceCodeAnalysis()ソース・コード分析機能へのアクセス。Snippet.Statusstatus(Snippet snippet)スニペットのステータスを返します。voidstop()現在実行中の評価を停止しようとします。Stream<TypeDeclSnippet>types()アクティブな型宣言(クラス、インタフェース、注釈型、および列挙型) snippetsを返します。Stream<String>unresolvedDependencies(DeclarationSnippet snippet)RECOVERABLE_DEFINEDまたはRECOVERABLE_NOT_DEFINED宣言の場合、スニペットの現在の未解決の依存関係の名前。voidunsubscribe(JShell.Subscription token)コールバック・サブスクリプションを取消します。Stream<VarSnippet>variables()アクティブな変数スニペットを返します。StringvarValue(VarSnippet snippet)変数の現在の値を取得します。
- 
メソッドの詳細- 
createpublic static JShell create() throws IllegalStateException- 戻り値:
- JShellのインスタンス。
- 例外:
- IllegalStateException-- JShellインスタンスを作成できなかった場合。
 
- 
builderpublic static JShell.Builder builder()JShell.Builderのファクトリ・メソッドで、JShellのインスタンスを作成するために使用されます。JShell.builder().build()でJShellのデフォルト・インスタンスを作成します。 その他の構築オプションについては、JShell.Builderを参照してください。- 戻り値:
- Builderのインスタンス。
- 関連項目:
- JShell.Builder
 
- 
sourceCodeAnalysispublic SourceCodeAnalysis sourceCodeAnalysis()ソース・コード分析機能へのアクセス。JShellのインスタンスは、常にsourceCodeAnalysis()から同じSourceCodeAnalysisインスタンスを返します。- 戻り値:
- SourceCodeAnalysisのインスタンスであり、完了検出や完了の提案などのソース分析に使用できます。
 
- 
evalpublic List<SnippetEvent> eval(String input) throws IllegalStateException該当する場合、定義および/または実行を含む入力文字列を評価します。 入力がエラーをチェックされ、エラーが遅延されない限り(いくつかのunresolvedDependencies参照の場合のように)、エラーは評価を中止します。入力は、ソース・コードの完全な1つのスニペット、つまり1つの式、文、変数宣言、メソッド宣言、クラス宣言、またはインポートでなければなりません。 任意の入力を個々の完全なスニペットに分割するには、 SourceCodeAnalysis.analyzeCompletion(String)を使用します。インポートの場合は、インポートが追加されます。 クラス、インタフェース・メソッド、および変数が定義されています。 変数、文、式の初期化が実行されます。 修飾子public、protected、private、static、およびfinalは、opレベルの宣言では許可されず、警告とともに無視されます。 同期、ネイティブ、抽象、およびデフォルトのトップレベル・メソッドは許可されず、エラーです。 宣言の前の定義が上書きされた場合、ステータスがOVERWRITTENに変更されたことを示すイベントが発生しますが、これは破棄、拒否、またはすでに上書きされた宣言には発生しません。 実行環境がデフォルトの場合のように処理中である場合、評価されたコードによって実行環境が終了すると、この JShellインスタンスは閉じられますが、呼び出しプロセスとVMは有効なままです。- パラメータ:
- input- 評価する入力文字列
- 戻り値:
- この評価によって直接的または間接的に発生したイベントのリスト。
- 例外:
- IllegalStateException- この- JShellインスタンスが閉じられている場合。
- 関連項目:
- SourceCodeAnalysis.analyzeCompletion(String),- onShutdown(java.util.function.Consumer)
 
- 
droppublic List<SnippetEvent> drop(Snippet snippet) throws IllegalStateExceptionステートから宣言を削除します。 つまり、スニペットがactive persistentスニペットである場合、スニペットを削除し、それに応じてJShell評価状態を更新します。 すべてのアクティブ・スニペットについて、statusをDROPPEDに変更します。- パラメータ:
- snippet- 削除するスニペット
- 戻り値:
- ドロップされたスニペットに依存する宣言の更新からのイベントのリスト。
- 例外:
- IllegalStateException- この- JShellインスタンスが閉じられている場合。
- IllegalArgumentException- スニペットがこの- JShellインスタンスに関連付けられていない場合。
 
- 
addToClasspathpublic void addToClasspath(String path)指定されたパスは、eval()で使用されるクラスパスの末尾に追加されます。 名前のないパッケージは、eval(String)コードが配置されているパッケージからアクセスできないことに注意してください。- パラメータ:
- path- クラスパスに追加するパス。
- 例外:
- IllegalStateException- この- JShellインスタンスが閉じられている場合。
 
- 
stoppublic void stop()現在実行中の評価を停止しようとします。eval(java.lang.String)メソッドが実行され、ユーザー・コードが実行されているときに呼び出されると、ユーザー・コードを停止しようとします。 通常、このメソッドは、evalメソッドを実行しているスレッドとは別のスレッドから呼び出す必要があることに注意してください。eval(java.lang.String)メソッドが実行されていない場合は何もしません。場合によっては、I/O操作で実行がブロックされたときや、ユーザー・コードが ThreadDeath例外をキャッチしているときなど、ユーザー・コードを停止しようとする試みが失敗することがあります。
- 
closepublic void close()この状態エンジンを閉じます。 リソースを解放します。 この状態エンジンが不要になったときに呼び出される必要があります。- 定義:
- close、インタフェース:- AutoCloseable
 
- 
snippetsすべてのスニペットを返します。- 戻り値:
- すべての現在のスニペットのスニペットをid順に並べ替えます。
 
- 
variablespublic Stream<VarSnippet> variables()アクティブな変数スニペットを返します。 この便利なメソッドは、snippets()をstatus(snippet).isActive()&& snippet.kind() == Kind.VARIABLEのためにフィルタリングし、VarSnippetにキャストしたものと等価です。- 戻り値:
- アクティブな宣言された変数。
 
- 
methodspublic Stream<MethodSnippet> methods()アクティブなメソッド・スニペットを返します。 この便利なメソッドは、snippets()とstatus(snippet).isActive()&& snippet.kind() == Kind.METHODのためにフィルタリングされ、MethodSnippetにキャストされるのと同じです。- 戻り値:
- アクティブな宣言されたメソッド。
 
- 
typespublic Stream<TypeDeclSnippet> types()アクティブな型宣言(クラス、インタフェース、注釈型、および列挙型) snippetsを返します。 この便利なメソッドは、snippets()とstatus(snippet).isActive()&& snippet.kind() == Kind.TYPE_DECLのためにフィルタリングされ、TypeDeclSnippetにキャストされるのと同じです。- 戻り値:
- アクティブな宣言型宣言。
 
- 
importspublic Stream<ImportSnippet> imports()アクティブなインポート・スニペットを返します。 この便利なメソッドは、snippets()がstatus(snippet).isActive()&& snippet.kind() == Kind.IMPORTのためにフィルタリングされ、ImportSnippetにキャストされるのと同じです。- 戻り値:
- アクティブな宣言宣言を宣言します。
 
- 
statuspublic Snippet.Status status(Snippet snippet)スニペットのステータスを返します。 これは、明示的なeval()呼び出しまたは依存関係によってトリガーされる自動更新のいずれかによって更新されます。- パラメータ:
- snippet- ルックアップする- Snippet
- 戻り値:
- このスニペットに対応するステータス
- 例外:
- IllegalStateException- この- JShellインスタンスが閉じられている場合。
- IllegalArgumentException- スニペットがこの- JShellインスタンスに関連付けられていない場合。
 
- 
diagnosticsスニペットの最新評価の診断を返します。 評価は、明示的なeval()呼び出し、または依存関係によってトリガーされる自動更新のいずれかによって行うことができます。- パラメータ:
- snippet- ルックアップする- Snippet
- 戻り値:
- このスニペットに対応する診断。 これには、unresolvedDependencies()で報告されたunresolvedDependencies参照は含まれません。
- 例外:
- IllegalStateException- この- JShellインスタンスが閉じられている場合。
- IllegalArgumentException- スニペットがこの- JShellインスタンスに関連付けられていない場合。
 
- 
unresolvedDependenciespublic Stream<String> unresolvedDependencies(DeclarationSnippet snippet)RECOVERABLE_DEFINEDまたはRECOVERABLE_NOT_DEFINED宣言の場合、スニペットの現在の未解決の依存関係の名前。 他のスニペットのeval()またはdrop()が依存関係の更新を引き起こす場合、このメソッドの戻り値は変更される可能性があります。- パラメータ:
- snippet- ルックアップする宣言- Snippet
- 戻り値:
- 現在unresolvedDependenciesであるシンボル名のストリーム。
- 例外:
- IllegalStateException- この- JShellインスタンスが閉じられている場合。
- IllegalArgumentException- スニペットがこの- JShellインスタンスに関連付けられていない場合。
 
- 
varValuepublic String varValue(VarSnippet snippet) throws IllegalStateException変数の現在の値を取得します。- パラメータ:
- snippet- 値が問合せされる変数Snippet。
- 戻り値:
- スニペットによって参照される変数の現在の値。
- 例外:
- IllegalStateException- この- JShellインスタンスが閉じられている場合。
- IllegalArgumentException- スニペットがこの- JShellインスタンスに関連付けられていない場合。
- IllegalArgumentException- 変数statusが- Snippet.Status.VALID以外の場合。
 
- 
onSnippetEventpublic JShell.Subscription onSnippetEvent(Consumer<SnippetEvent> listener) throws IllegalStateExceptionスニペットのステータスが変更されたときに呼び出されるコールバックを登録します。 各呼び出しは新しいサブスクリプションを追加します。- パラメータ:
- listener- ステータスが変更されたときに実行するアクション。
- 戻り値:
- このサブスクリプションをunsubscribeするために使用できるトークン。
- 例外:
- IllegalStateException- この- JShellインスタンスが閉じられている場合。
 
- 
onShutdownpublic JShell.Subscription onShutdown(Consumer<JShell> listener) throws IllegalStateExceptionこのJShellインスタンスが終了するときに呼び出されるコールバックを登録します。 これは、クライアント・プロセスが(例えばSystem.exit(0)と呼ばれる)を終了したか、またはclose()のように接続がシャットダウンされたために発生します。 各呼び出しは新しいサブスクリプションを追加します。- パラメータ:
- listener- 状態が終了したときに実行するアクション。
- 戻り値:
- このサブスクリプションをunsubscribeするために使用できるトークン。
- 例外:
- IllegalStateException- このJShellインスタンスが閉じられている場合
 
- 
unsubscribepublic void unsubscribe(JShell.Subscription token)コールバック・サブスクリプションを取消します。- パラメータ:
- token- サブスクリプションに対応するトークンは、サブスクライブ解除されます。
 
 
-