- すべての実装されたインタフェース:
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)変数の現在の値を取得します。
-
メソッドの詳細
-
create
public static JShell create() throws IllegalStateException- 戻り値:
JShellのインスタンス。- 例外:
IllegalStateException-JShellインスタンスを作成できなかった場合。
-
builder
public static JShell.Builder builder()JShell.Builderのファクトリ・メソッドで、JShellのインスタンスを作成するために使用されます。JShell.builder().build()でJShellのデフォルト・インスタンスを作成します。 その他の構築オプションについては、JShell.Builderを参照してください。- 戻り値:
Builderのインスタンス。- 関連項目:
JShell.Builder
-
sourceCodeAnalysis
public SourceCodeAnalysis sourceCodeAnalysis()ソース・コード分析機能へのアクセス。JShellのインスタンスは、常にsourceCodeAnalysis()から同じSourceCodeAnalysisインスタンスを返します。- 戻り値:
SourceCodeAnalysisのインスタンスであり、完了検出や完了の提案などのソース分析に使用できます。
-
eval
public 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)
-
drop
public List<SnippetEvent> drop(Snippet snippet) throws IllegalStateExceptionステートから宣言を削除します。 つまり、スニペットがactive persistentスニペットである場合、スニペットを削除し、それに応じてJShell評価状態を更新します。 すべてのアクティブ・スニペットについて、statusをDROPPEDに変更します。- パラメータ:
snippet- 削除するスニペット- 戻り値:
- ドロップされたスニペットに依存する宣言の更新からのイベントのリスト。
- 例外:
IllegalStateException- このJShellインスタンスが閉じられている場合。IllegalArgumentException- スニペットがこのJShellインスタンスに関連付けられていない場合。
-
addToClasspath
public void addToClasspath(String path)指定されたパスは、eval()で使用されるクラスパスの末尾に追加されます。 名前のないパッケージは、eval(String)コードが配置されているパッケージからアクセスできないことに注意してください。- パラメータ:
path- クラスパスに追加するパス。- 例外:
IllegalStateException- このJShellインスタンスが閉じられている場合。
-
stop
public void stop()現在実行中の評価を停止しようとします。eval(java.lang.String)メソッドが実行され、ユーザー・コードが実行されているときに呼び出されると、ユーザー・コードを停止しようとします。 通常、このメソッドは、evalメソッドを実行しているスレッドとは別のスレッドから呼び出す必要があることに注意してください。eval(java.lang.String)メソッドが実行されていない場合は何もしません。場合によっては、I/O操作で実行がブロックされたときや、ユーザー・コードが
ThreadDeath例外をキャッチしているときなど、ユーザー・コードを停止しようとする試みが失敗することがあります。 -
close
public void close()この状態エンジンを閉じます。 リソースを解放します。 この状態エンジンが不要になったときに呼び出される必要があります。- 定義:
close、インタフェース:AutoCloseable
-
snippets
すべてのスニペットを返します。- 戻り値:
- すべての現在のスニペットのスニペットをid順に並べ替えます。
-
variables
public Stream<VarSnippet> variables()アクティブな変数スニペットを返します。 この便利なメソッドは、snippets()をstatus(snippet).isActive()&& snippet.kind() == Kind.VARIABLEのためにフィルタリングし、VarSnippetにキャストしたものと等価です。- 戻り値:
- アクティブな宣言された変数。
-
methods
public Stream<MethodSnippet> methods()アクティブなメソッド・スニペットを返します。 この便利なメソッドは、snippets()とstatus(snippet).isActive()&& snippet.kind() == Kind.METHODのためにフィルタリングされ、MethodSnippetにキャストされるのと同じです。- 戻り値:
- アクティブな宣言されたメソッド。
-
types
public Stream<TypeDeclSnippet> types()アクティブな型宣言(クラス、インタフェース、注釈型、および列挙型) snippetsを返します。 この便利なメソッドは、snippets()とstatus(snippet).isActive()&& snippet.kind() == Kind.TYPE_DECLのためにフィルタリングされ、TypeDeclSnippetにキャストされるのと同じです。- 戻り値:
- アクティブな宣言型宣言。
-
imports
public Stream<ImportSnippet> imports()アクティブなインポート・スニペットを返します。 この便利なメソッドは、snippets()がstatus(snippet).isActive()&& snippet.kind() == Kind.IMPORTのためにフィルタリングされ、ImportSnippetにキャストされるのと同じです。- 戻り値:
- アクティブな宣言宣言を宣言します。
-
status
public Snippet.Status status(Snippet snippet)スニペットのステータスを返します。 これは、明示的なeval()呼び出しまたは依存関係によってトリガーされる自動更新のいずれかによって更新されます。- パラメータ:
snippet- ルックアップするSnippet- 戻り値:
- このスニペットに対応するステータス
- 例外:
IllegalStateException- このJShellインスタンスが閉じられている場合。IllegalArgumentException- スニペットがこのJShellインスタンスに関連付けられていない場合。
-
diagnostics
スニペットの最新評価の診断を返します。 評価は、明示的なeval()呼び出し、または依存関係によってトリガーされる自動更新のいずれかによって行うことができます。- パラメータ:
snippet- ルックアップするSnippet- 戻り値:
- このスニペットに対応する診断。 これには、
unresolvedDependencies()で報告されたunresolvedDependencies参照は含まれません。 - 例外:
IllegalStateException- このJShellインスタンスが閉じられている場合。IllegalArgumentException- スニペットがこのJShellインスタンスに関連付けられていない場合。
-
unresolvedDependencies
public Stream<String> unresolvedDependencies(DeclarationSnippet snippet)RECOVERABLE_DEFINEDまたはRECOVERABLE_NOT_DEFINED宣言の場合、スニペットの現在の未解決の依存関係の名前。 他のスニペットのeval()またはdrop()が依存関係の更新を引き起こす場合、このメソッドの戻り値は変更される可能性があります。- パラメータ:
snippet- ルックアップする宣言Snippet- 戻り値:
- 現在unresolvedDependenciesであるシンボル名のストリーム。
- 例外:
IllegalStateException- このJShellインスタンスが閉じられている場合。IllegalArgumentException- スニペットがこのJShellインスタンスに関連付けられていない場合。
-
varValue
public String varValue(VarSnippet snippet) throws IllegalStateException変数の現在の値を取得します。- パラメータ:
snippet- 値が問合せされる変数Snippet。- 戻り値:
- スニペットによって参照される変数の現在の値。
- 例外:
IllegalStateException- このJShellインスタンスが閉じられている場合。IllegalArgumentException- スニペットがこのJShellインスタンスに関連付けられていない場合。IllegalArgumentException- 変数statusがSnippet.Status.VALID以外の場合。
-
onSnippetEvent
public JShell.Subscription onSnippetEvent(Consumer<SnippetEvent> listener) throws IllegalStateExceptionスニペットのステータスが変更されたときに呼び出されるコールバックを登録します。 各呼び出しは新しいサブスクリプションを追加します。- パラメータ:
listener- ステータスが変更されたときに実行するアクション。- 戻り値:
- このサブスクリプションをunsubscribeするために使用できるトークン。
- 例外:
IllegalStateException- このJShellインスタンスが閉じられている場合。
-
onShutdown
public JShell.Subscription onShutdown(Consumer<JShell> listener) throws IllegalStateExceptionこのJShellインスタンスが終了するときに呼び出されるコールバックを登録します。 これは、クライアント・プロセスが(例えばSystem.exit(0)と呼ばれる)を終了したか、またはclose()のように接続がシャットダウンされたために発生します。 各呼び出しは新しいサブスクリプションを追加します。- パラメータ:
listener- 状態が終了したときに実行するアクション。- 戻り値:
- このサブスクリプションをunsubscribeするために使用できるトークン。
- 例外:
IllegalStateException- このJShellインスタンスが閉じられている場合
-
unsubscribe
public void unsubscribe(JShell.Subscription token)コールバック・サブスクリプションを取消します。- パラメータ:
token- サブスクリプションに対応するトークンは、サブスクライブ解除されます。
-