- すべての実装されたインタフェース:
AutoCloseable
JShell
インスタンスは、進化するコンパイルおよび実行状態を保持します。 状態は、インスタンス・メソッドeval(String)
、drop(Snippet)
、およびaddToClasspath(String)
を使用して変更されます。 ほとんどのメソッドは、状態を問い合せます。 JShell
インスタンスは、onSnippetEvent(Consumer)
とonShutdown(Consumer)
でイベントを登録することもできます。unsubscribe(Subscription)
で登録解除されています。 ソース分析ユーティリティへのアクセスはsourceCodeAnalysis()
を介して行います。 完了したら、インスタンスを閉じてリソースを解放する必要があります -- close()
。
JShell
のインスタンスがJShell.create()
で作成されます。
このクラスはスレッド・セーフではありません。ただし、前述のように、すべてのアクセスは1つのスレッドを介して行う必要があります。
- 導入されたバージョン:
- 9
-
ネストされたクラスのサマリー
ネストされたクラス修飾子と型クラス説明static class
JShell
インスタンスのビルダー。class
サブスクリプションとは、サブスクリプションを参照するためのトークンであり、unsubscribedとすることができます。 -
メソッドのサマリー
修飾子と型メソッド説明void
addToClasspath
(String path) 指定されたパスは、eval()で使用されるクラスパスの末尾に追加されます。static JShell.Builder
builder()
JShell
のインスタンスの作成に使用されるJShell.Builder
のファクトリ・メソッド。void
close()
この状態エンジンを閉じます。static JShell
create()
新しいJShell状態エンジンを作成します。diagnostics
(Snippet snippet) スニペットの最新の評価の診断を返します。状態から宣言を削除します。定義または実行(あるいはその両方)を含む入力文字列を評価します(該当する場合)。imports()
アクティブなインポート・スニペットを返します。methods()
アクティブなメソッド・スニペットを返します。onShutdown
(Consumer<JShell> listener) このJShellインスタンスの終了時にコールされるコールバックを登録します。onSnippetEvent
(Consumer<SnippetEvent> listener) スニペットのステータスが変更されたときにコールするコールバックを登録します。snippets()
すべてのスニペットを返します。ソース・コード分析機能へのアクセス。スニペットのステータスを返します。void
stop()
現在実行中の評価を停止しようとしました。types()
アクティブな型宣言の(クラス、インタフェース、注釈タイプおよび列挙)スニペットを返します。unresolvedDependencies
(DeclarationSnippet snippet) RECOVERABLE_DEFINED
またはRECOVERABLE_NOT_DEFINED
宣言の場合、スニペットの現在の未解決の依存関係の名前。void
unsubscribe
(JShell.Subscription token) コールバック・サブスクリプションを取り消します。アクティブな変数スニペットを返します。varValue
(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
のインスタンス。- 関連項目:
-
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
インスタンスがクローズされている場合。- 関連項目:
-
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()アクティブなメソッド・スニペットを返します。 この便利なメソッドは、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
スニペットの最新の評価の診断を返します。 評価は、明示的な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
- ステータスが変更されたときに実行する処理。- 戻り値:
- このサブスクリプションをunsubscribeするために使用できるトークン。
- 例外:
IllegalStateException
- このJShell
インスタンスがクローズされている場合。
-
onShutdown
public JShell.Subscription onShutdown(Consumer<JShell> listener) throws IllegalStateException このJShellインスタンスの終了時にコールされるコールバックを登録します。 これは、クライアント・プロセスが(e.g. calledSystem.exit(0))を終了したか、close()のように接続がシャットダウンされたために発生します。 コールごとに、新しいサブスクリプションが追加されます。- パラメータ:
listener
- 状態が終了したときに実行するアクション。- 戻り値:
- このサブスクリプションをunsubscribeするために使用できるトークン。
- 例外:
IllegalStateException
- このJShellインスタンスが閉じられている場合
-
unsubscribe
public void unsubscribe(JShell.Subscription token) コールバック・サブスクリプションを取り消します。- パラメータ:
token
- サブスクライブ解除するサブスクリプションに対応するトークン。
-