- java.lang.Object
-
- jdk.jshell.JShell
-
- すべての実装されたインタフェース:
AutoCloseable
public class JShell extends Object implements AutoCloseable
JShell評価状態エンジン。 これは、JShell APIの中央クラスです。JShellインスタンスは、進化するコンパイルおよび実行状態を保持します。 状態は、インスタンス・メソッドeval(String)、drop(Snippet)およびaddToClasspath(String)によって変更されます。 ほとんどのメソッドは状態を問い合せます。JShellインスタンスでは、unsubscribe(Subscription)に登録されていないonSnippetEvent(Consumer)およびonShutdown(Consumer)にイベントを登録することもできます。 ソース分析ユーティリティにアクセスするには、sourceCodeAnalysis()を使用します。 完了したら、インスタンスを閉じてリソースを解放する必要があります(close())。JShellのインスタンスは、JShell.create()を使用して作成されます。このクラスはスレッド・セーフではありません。ただし、記載されているように、すべてのアクセスは1つのスレッドを介して行われる必要があります。
- 導入されたバージョン:
- 9
-
-
ネストされたクラスのサマリー
ネストされたクラス 修飾子と型 クラス 説明 static classJShell.BuilderJShellインスタンス用のビルダー。classJShell.Subscriptionサブスクリプションは、サブスクライブ解除できるように、サブスクリプションを参照するためのトークンです。
-
メソッドのサマリー
すべてのメソッド 静的メソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 voidaddToClasspath(String path)指定されたパスは、eval()で使用されるクラスパスの末尾に追加されます。static JShell.Builderbuilder()JShellのインスタンスの作成に使用されるJShell.Builderのファクトリ・メソッド。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()アクティブな型宣言(クラス、インタフェース、注釈型および列挙型)スニペットを返します。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のインスタンスの作成に使用されるJShell.Builderのファクトリ・メソッド。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つの式、文、変数宣言、メソッド宣言、クラス宣言またはインポート)です。 任意の入力を個々の完全なスニペットに分割するには、
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
状態から宣言を削除します。 つまり、スニペットがアクティブな永続スニペットの場合は、スニペットを削除し、それに応じて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
-
variables
public Stream<VarSnippet> variables()
アクティブな変数スニペットを返します。 この便利なメソッドは、status(snippet).isActive()&& snippet.kind() == Kind.VARIABLEでフィルタ処理され、VarSnippetにキャストされるsnippets()と同等です。- 戻り値:
- アクティブな宣言された変数。
-
methods
public Stream<MethodSnippet> methods()
アクティブなメソッド・スニペットを返します。 この便利なメソッドは、status(snippet).isActive()&& snippet.kind() == Kind.METHODでフィルタ処理され、MethodSnippetにキャストされるsnippets()と同等です。- 戻り値:
- アクティブな宣言されたメソッド。
-
types
public Stream<TypeDeclSnippet> types()
アクティブな型宣言(クラス、インタフェース、注釈型および列挙型)スニペットを返します。 この便利なメソッドは、status(snippet).isActive()&& snippet.kind() == Kind.TYPE_DECLでフィルタ処理され、TypeDeclSnippetにキャストされるsnippets()と同等です。- 戻り値:
- アクティブな宣言型宣言。
-
imports
public Stream<ImportSnippet> imports()
アクティブなインポート・スニペットを返します。 この便利なメソッドは、status(snippet).isActive()&& snippet.kind() == Kind.IMPORTでフィルタ処理され、ImportSnippetにキャストされるsnippets()と同等です。- 戻り値:
- アクティブな宣言されたインポート宣言。
-
status
public Snippet.Status status(Snippet snippet)
スニペットのステータスを返します。 これは、明示的なeval()コールまたは依存関係によってトリガーされた自動更新のいずれかによって更新されます。- パラメータ:
snippet- 検索するSnippet- 戻り値:
- このスニペットに対応するステータス
- 例外:
IllegalStateException- このJShellインスタンスがクローズされている場合。IllegalArgumentException- スニペットがこのJShellインスタンスに関連付けられていない場合。
-
diagnostics
public Stream<Diag> diagnostics(Snippet snippet)
スニペットの最新の評価の診断を返します。 この評価は、明示的な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- 変数のステータスがSnippet.Status.VALID以外の場合。
-
onSnippetEvent
public JShell.Subscription onSnippetEvent(Consumer<SnippetEvent> listener) throws IllegalStateException
スニペットのステータスが変更されたときに呼び出されるコールバックを登録します。 コールごとに新しいサブスクリプションが追加されます。- パラメータ:
listener- ステータスが変更されたときに実行するアクション。- 戻り値:
- このサブスクリプションをサブスクライブ解除するために使用できるトークン。
- 例外:
IllegalStateException- このJShellインスタンスがクローズされている場合。
-
onShutdown
public JShell.Subscription onShutdown(Consumer<JShell> listener) throws IllegalStateException
このJShellインスタンスの終了時にコールされるコールバックを登録します。 これは、クライアント・プロセスが終了した(たとえば、System.exit(0))か、close()のように接続がシャットダウンされたために発生します。 コールごとに新しいサブスクリプションが追加されます。- パラメータ:
listener- 状態が終了したときに実行するアクション。- 戻り値:
- このサブスクリプションをサブスクライブ解除するために使用できるトークン。
- 例外:
IllegalStateException- このJShellインスタンスがクローズされている場合
-
unsubscribe
public void unsubscribe(JShell.Subscription token)
コールバック・サブスクリプションを取り消します。- パラメータ:
token- サブスクライブ解除するサブスクリプションに対応するトークン。
-
-