jshell
ツールは、Javaプログラミング言語の宣言、文および式をread-eval-printループ(REPL)で対話しながら評価する場合に使用します。
形式
jshell [options] [load-files]
options
コマンド行オプションをスペースで区切ったものです。「jshellのオプション」を参照してください。
load-files
ツールの起動時に実行する1つ以上のスクリプトです。スクリプトには、有効なコード・スニペットまたはJShellコマンドを含めることができます。
スクリプトはローカル・ファイルまたは次の事前定義済スクリプトのいずれかにできます。
DEFAULT
デフォルトのエントリをロードします(一般にインポートとして使用されます)。
JAVASE
すべてのJava SEパッケージをインポートします。
PRINTING
print
、println
およびprintf
を、ツール内で使用するためのjshell
メソッドとして定義します。
複数のスクリプトの場合、空白を使用して名前を区切ります。スクリプトは、コマンド行で入力された順に実行されます。コマンド行スクリプトは、起動スクリプトの後に実行されます。JShellの起動後にスクリプトを実行するには、/open
コマンドを使用します。
標準入力からの入力を受け入れて、インタラクティブなI/Oを抑制するには、load-filesにハイフン(-)を指定します。このオプションは、パイプ・チェーンでjshell
ツールを使用できるようにします。
説明
JShellは、Javaプログラミング言語の宣言、文および式を対話しながら評価する手段となり、言語の習得、よく知らないコードおよびAPIの試用、複雑なコードの試作がしやすくなります。Javaの文、変数定義、メソッド定義、クラス定義、インポート文および式が使用可能です。入力されたコードの断片をスニペットと呼びます。
入力されたスニペットは、評価されてフィードバックが提示されます。フィードバックは、入力されたスニペットと選択されたフィードバック・モードに応じて、処理の結果および説明の記載ありから一切記載なしまで様々です。エラーは、フィードバック・モードに関係なく記載されます。ツールの学習時には、冗長モードで起動して最大量のフィードバックを取得します。
コマンド行オプションは、JShellの起動時に初期環境を構成するために使用できます。JShell内で、コマンドは必要に応じて環境を変更するために使用できます。
既存のスニペットは、JShellセッションを初期化するために、あるいはセッション内であればいつでもファイルからロードできます。スニペットは、セッション内に変更して様々なバリエーションを試し、修正することができます。後で使用するためにスニペットを保存するには、ファイルに保存します。
jshellのオプション
--add-modules module[,module...]
初期モジュールに加えて解決するルート・モジュールを指定します。
-Cflag
コンパイラに渡すフラグを指定します。複数のフラグを渡すには、必要なフラグまたはフラグ引数ごとにこのオプションのインスタンスを指定します。
--class-path path
クラス・ファイルを見つけるために検索されるディレクトリおよびアーカイブを指定します。このオプションはCLASSPATH
環境変数のパスをオーバーライドします。環境変数を設定しておらず、このオプションを使用しない場合は、現在のディレクトリが検索されます。Oracle Solaris、LinuxおよびmacOSでは、コロン(:)を使用してパス内の項目を区切ります。Windowsの場合は、セミコロン(;)を使用して項目を区切ります。
--feedback mode
入力内容に応じて提供されるフィードバックの初期レベルを設定します。初期レベルは、/set feedback mode
コマンドを使用して、セッション内でオーバーライドできます。デフォルトはnormal
です。
mode
には、次の値が有効です。
verbose
エントリについて詳細なフィードバックを示します。実行された処理に関する追加情報は、処理結果の後に表示されます。次のプロンプトは、フィードバックとは空行で区切られます。
normal
平均的な量のフィードバックを示します。次のプロンプトは、フィードバックとは空行で区切られます。
concise
最小量のフィードバックを示します。次のプロンプトは、コード・スニペットまたはフィードバックのすぐ後から続きます。
silent
フィードバックを示しません。次のプロンプトは、コード・スニペットのすぐ後から続きます。
custom
モードの定義方法に基づいたカスタム・フィードバックを示します。カスタム・フィードバック・モードは、/set mode
コマンドを使用して、JShell内で作成されます。
--help
または-h
標準オプションのサマリーを出力し、ツールを終了します。
--help-extra
または-X
非標準オプションのサマリーを出力し、ツールを終了します。非標準のオプションは予告なく変更される可能性があります。
-Jflag
ランタイム・システムに渡すフラグを指定します。複数のフラグを渡すには、必要なフラグまたはフラグ引数ごとにこのオプションのインスタンスを指定します。
--module-path modulepath
--no-startup
JShellの起動時に、起動スクリプトが実行されないようにします。このオプションは、JShellの起動時にコマンド行に入力されたスクリプトのみを実行する場合、またはスクリプトが入力されなかったときに事前にロードされた情報なしにJShellを起動する場合に使用します。このオプションは、--startup
オプションが使用されている場合には使用できません。
-q
フィードバック・モードをconcise
に設定します(--feedback concise
と入力するのと同じです)。
-Rflag
リモート・ランタイム・システムに渡すフラグを指定します。複数のフラグを渡すには、渡すフラグまたはフラグ引数ごとにこのオプションのインスタンスを指定します。
-s
フィードバック・モードをsilent
に設定します(--feedback silent
と入力するのと同じです)。
--show-version
バージョン情報を出力し、ツールを入力します。
--startup file
このセッションのデフォルトの起動スクリプトをオーバーライドします。スクリプトには、有効なコード・スニペットまたはコマンドを含めることができます。
スクリプトはローカル・ファイルまたは次の事前定義済スクリプトのいずれかにできます。
DEFAULT
デフォルトのエントリをロードします(一般にインポートとして使用されます)。
JAVASE
すべてのJava SEパッケージをインポートします。
PRINTING
print
、println
およびprintf
を、ツール内で使用するためのjshell
メソッドとして定義します。
複数のスクリプトの場合、スクリプトごとにこのオプションの別個のインスタンスを指定します。起動スクリプトは、JShellの初回起動時と、/reset
、/reload
または/env
コマンドによるセッションの再開時に実行されます。起動スクリプトは、コマンド行で入力された順に実行されます。
このオプションは、--no-startup
オプションが使用されている場合には使用できません。
-v
フィードバック・モードをverbose
に設定します(--feedback verbose
と入力するのと同じです)。
--version
バージョン情報を出力し、ツールを終了します。
jshellのコマンド
jshell
ツール内で、コマンドは環境の変更やコード・スニペットの管理に使用されます。
/drop {name|id|startID-endID}[ {name|id|startID-endID}...]
名前、IDまたはIDの範囲で識別されるスニペットを削除して、それらを非アクティブにします。IDの範囲の場合は、開始IDと終了IDをハイフンで区切って指定します。リストを指定する場合は、リスト内の項目を空白で区切ります。/list
コマンドを使用してコード・スニペットのIDを参照します。
/edit [option]
エディタを開きます。オプションが入力されていない場合、エディタはアクティブなスニペットを使用して開きます。
有効なオプションは次のとおりです。
{name|id|startID-endID}[ {name|id|startID-endID}...]
名前、IDまたはIDの範囲で識別されるスニペットを使用してエディタを開きます。IDの範囲の場合は、開始IDと終了IDをハイフンで区切って指定します。リストを指定する場合は、リスト内の項目を空白で区切ります。/list
コマンドを使用してコード・スニペットのIDを参照します。
-all
起動スニペット、失敗したスニペット、上書きされたスニペット、削除されたスニペットを含め、すべてのスニペットを使用してエディタを開きます。
-start
JShellの起動時に評価された起動スニペットを使用してエディタを開きます。
編集モードを終了するには、エディタ・ウィンドウを閉じるか、エディタの設定時に-wait
オプションを使用した場合は、示されたプロンプトに応答します。
/set editor
コマンドを使用して、使用するエディタを指定します。エディタが設定されていない場合、環境変数JSHELLEDITOR
、VISUAL
、EDITOR
がこの順でチェックされます。エディタがJShellで設定されておらず、エディタ環境変数がいずれも設定されていない場合、デフォルトの簡易エディタが使用されます。
/env [options]
環境設定を表示するか、環境設定を更新してセッションを再開します。オプションを入力しなかった場合、現在の環境設定が表示されます。1つ以上のオプションを入力した場合、セッションは次のように再開されます。
指定されたオプションで環境設定を更新します。
実行の状態をリセットします。
起動スクリプトを実行します。
入力された順序で履歴のサイレント・モードでリプレイします。履歴には、jshell
プロンプトで、コマンド行で入力したスクリプトに、または/open
コマンドを使用して入力したスクリプトに入力した有効なスニペットまたは/drop
コマンドがすべて含まれます。
コマンド行で入力した環境設定、または以前の/reset
、/env
または/reload
コマンドを使用して指定した環境設定は、設定を上書きするoption
が入力されないかぎり維持されます。
有効なオプションは次のとおりです。
--add-modules module[,module...]
初期モジュールに加えて解決するルート・モジュールを指定します。
--add-exports source-module/package=target-module[,target-module]*
source-module
からtarget-module
へのpackage
のエクスポートを追加します。
--class-path path
クラス・ファイルを見つけるために検索されるディレクトリおよびアーカイブを指定します。このオプションはCLASSPATH
環境変数のパスをオーバーライドします。環境変数を設定しておらず、このオプションを使用しない場合は、現在のディレクトリが検索されます。Oracle Solaris、LinuxおよびmacOSでは、コロン(:)を使用してパス内の項目を区切ります。Windowsの場合は、セミコロン(;)を使用して項目を区切ります。
--module-path modulepath
/exit [integer-expression-snippet]
ツールを終了します。スニペットが入力されていない場合、終了ステータスはゼロになります。スニペットが入力されており、スニペットの結果が整数である場合、その結果が終了ステータスとして使用されます。エラーが発生した場合またはスニペットの結果が整数ではない場合、エラーが表示され、ツールはアクティブのままになります。
/history
このセッションで入力された内容を表示します。
/help [command|subject]
コマンドおよびサブジェクトに関する情報を表示します。オプションを入力しなかった場合、すべてのコマンドに関するサマリー情報と使用可能なサブジェクトのリストが表示されます。有効なコマンドを指定すると、そのコマンドの補足情報が表示されます。有効なサブジェクトを入力すると、そのサブジェクトに関する情報が表示されます。
subject
には、次の値が有効です。
context
環境の構成に使用可能なオプションの説明を表示します。
intro
ツールの概要を示します。
shortcuts
コマンドおよびスニペットを補完するためのキーストロークの説明を表示します。入力のショートカットを参照してください。
/imports
起動スクリプトおよびJShellの起動時にコマンド行に入力されたスクリプトからのものを含め、現在のアクティブなインポートを表示します。
/list [option]
スニペットとそのIDのリストを表示します。オプションを入力しなかった場合、すべてのアクティブなスニペットが表示されますが、起動スニペットは表示されません。
有効なオプションは次のとおりです。
/methods [option]
入力されたメソッドに関する情報を表示します。オプションを入力しなかった場合、すべてのアクティブなメソッドの名前、パラメータの型および戻り値の型が表示されます。
有効なオプションは次のとおりです。
{name|id|startID-endID}[ {name|id|startID-endID}...]
名前、IDまたはIDの範囲で識別されたメソッドの情報を表示します。IDの範囲の場合は、開始IDと終了IDをハイフンで区切って指定します。リストを指定する場合は、リスト内の項目を空白で区切ります。/list
コマンドを使用してコード・スニペットのIDを参照します。
-all
JShellの起動時に追加されたメソッド、失敗したメソッド、上書きされたメソッド、削除されたメソッドを含め、すべてのメソッドに関する情報を表示します。
-start
JShellの起動時に追加された起動メソッドに関する情報を表示します。
/open file
指定されたスクリプトを開き、スニペットをツールに読み込みます。スクリプトはローカル・ファイルまたは次の事前定義済スクリプトのいずれかにできます。
/reload [options]
セッションを次のように再開します。
指定されたオプションがある場合は、そのオプションで環境設定を更新します。
実行の状態をリセットします。
起動スクリプトを実行します。
入力された順に履歴をリプレイします。履歴には、jshell
プロンプトで、コマンド行で入力したスクリプトに、または/open
コマンドを使用して入力したスクリプトに入力した有効なスニペットまたは/drop
コマンドがすべて含まれます。
コマンド行で入力した環境設定、または以前の/reset
、/env
または/reload
コマンドを使用して指定した環境設定は、設定を上書きするoption
が入力されないかぎり維持されます。
有効なオプションは次のとおりです。
--add-modules module[,module...]
初期モジュールに加えて解決するルート・モジュールを指定します。
--add-exports module/package=target-module[,target-module]*
source-module
からtarget-module
へのpackage
のエクスポートを追加します。
--class-path path
クラス・ファイルを見つけるために検索されるディレクトリおよびアーカイブを指定します。このオプションはCLASSPATH
環境変数のパスをオーバーライドします。環境変数を設定しておらず、このオプションを使用しない場合は、現在のディレクトリが検索されます。Oracle Solaris、LinuxおよびmacOSでは、コロン(:)を使用してパス内の項目を区切ります。Windowsの場合は、セミコロン(;)を使用して項目を区切ります。
--module-path modulepath
-quiet
表示せずに、有効な履歴をリプレイします。エラーが表示されます。
-restore
ツールの前回実行の開始時の状態または前回の実行で/reset
、/reload
または/env
コマンドが最後に実行されたときの状態に環境をリセットします。その時点以降の有効な履歴がリプレイされます。このオプションは、前回のJShellセッションを復元する場合に使用します。
/reset [options]
次のように入力されたスニペットをすべて破棄し、セッションを再開します。
指定されたオプションがある場合は、そのオプションで環境設定を更新します。
実行の状態をリセットします。
起動スクリプトを実行します。
履歴はリプレイされません。入力されたコードはすべて失われます。
コマンド行で入力した環境設定、または以前の/reset
、/env
または/reload
コマンドを使用して指定した環境設定は、設定を上書きするoption
が入力されないかぎり維持されます。
有効なオプションは次のとおりです。
--add-modules module[,module...]
初期モジュールに加えて解決するルート・モジュールを指定します。
--add-exports module/package=target-module[,target-module]*
source-module
からtarget-module
へのpackage
のエクスポートを追加します。
--class-path path
クラス・ファイルを見つけるために検索されるディレクトリおよびアーカイブを指定します。このオプションはCLASSPATH
環境変数のパスをオーバーライドします。環境変数を設定しておらず、このオプションを使用しない場合は、現在のディレクトリが検索されます。Oracle Solaris、LinuxおよびmacOSでは、コロン(:)を使用してパス内の項目を区切ります。Windowsの場合は、セミコロン(;)を使用して項目を区切ります。
--module-path modulepath
/save [options] file
スニペットおよびコマンドを指定されたファイルに保存します。オプションを入力しなかった場合、アクティブなスニペットが保存されます。
有効なオプションは次のとおりです。
{name|id|startID-endID}[ {name|id|startID-endID}...]
名前、IDまたはIDの範囲で識別されたスニペットおよびコマンドを保存します。IDの範囲の場合は、開始IDと終了IDをハイフンで区切って指定します。リストを指定する場合は、リスト内の項目を空白で区切ります。/list
コマンドを使用してコード・スニペットのIDを参照します。
-all
起動スニペット、上書きされたスニペット、失敗したスニペットを含め、すべてのスニペットを保存します。
-history
現在のセッションで入力されたすべてのコマンドおよびスニペットの順次履歴を保存します。
-start
現在の起動設定を保存します。起動スクリプトを指定しなかった場合、空のファイルが保存されます。
/set [setting]
外部エディタ、起動設定およびフィードバック・モードを含め、構成情報を設定します。このコマンドは、カスタマイズされたプロンプト、形式および切捨て値によるカスタム・フィードバック・モードの作成にも使用されます。設定を入力しなかった場合、エディタの現在の設定、起動設定およびフィードバック・モードが表示されます。
setting
には、次の値が有効です。
editor [options] [command]
/edit
コマンドの入力時に、外部エディタの起動に使用されるコマンドを設定します。このコマンドには、空白で区切られたコマンド引数を指定できます。コマンドまたはオプションを入力しなかった場合、現在の設定が表示されます。
有効なオプションは次のとおりです。
-default
エディタを、JShellに同梱されているデフォルト・エディタに設定します。このオプションは、エディタを起動するためのコマンドが入力されている場合は使用できません。
-delete
セッションの開始時にエディタを有効なものに設定します。-retain
オプションとともに使用した場合、保持されたエディタ設定は削除され、エディタは環境変数JSHELLEDITOR
、VISUAL
、EDITOR
の内で最初に見つかったものに設定されます。エディタ環境変数がいずれも設定されていない場合、このオプションは、エディタをデフォルト・エディタに設定します。
このオプションは、エディタを起動するためのコマンドが入力されている場合は使用できません。
-retain
セッション間でエディタ設定を保存します。他にオプションまたはコマンドを入力しなかった場合、現在の設定が保存されます。
-wait
編集の完了時を指示するようにユーザーに求めます。それ以外の場合は、エディタの終了時にJShellに制御を戻します。このオプションは、編集ウィンドウがすでに存在するときなど、使用中のエディタをすぐに終了する場合に使用します。このオプションは、エディタを起動するためのコマンドが入力されている場合にのみ有効です。
feedback [mode]
入力への応答に使用されるフィードバック・モードを設定します。モードを入力しなかった場合、現在のモードが表示されます。
有効なモードには、concise
、normal
、silent
、verbose
および/set mode
コマンドで作成されたカスタム・モードがあります。
format mode field "format-string" selector
入力への応答で示されるフィードバックの形式を設定します。モードを入力しなかった場合、すべてのフィードバック・モードについてすべてのフィールドの現在の形式が表示されます。モードのみを入力した場合、そのモードについて現在の形式が表示されます。モードとフィールドのみを入力した場合、そのフィールドについて現在の形式が表示されます。
形式を定義する場合、次の引数は必須です。
mode
応答形式が適用されるフィードバック・モードを指定します。/set mode
コマンドを使用して作成されたカスタム・モードのみ変更できます。
field
応答形式が適用されるコンテキスト固有のフィールドを指定します。フィールドについては、オンライン・ヘルプを参照してください(/help /set format
コマンドを使用してJShellからアクセスできます)。
"format-string"
指定されたフィールドおよびセレクタの応答形式として使用する文字列を指定します。形式の文字列の構造については、オンライン・ヘルプを参照してください(/help /set format
コマンドを使用してJShellからアクセスできます)。
selector
応答形式が適用されるコンテキストを指定します。セレクタについては、オンライン・ヘルプを参照してください(/help /set format
コマンドを使用してJShellからアクセスできます)。
mode [mode-name] [existing-mode] [options]
指定されたモード名でカスタム・フィードバック・モードを作成します。モード名を入力しなかった場合、すべてのモードの設定が表示され、これにはモード、プロンプト、形式および切捨ての設定が含まれます。既存のモードの名前を指定した場合、既存モードの設定が作成中のモードにコピーされます。
有効なオプションは次のとおりです。
-command|-quiet
モードの使用時にコマンドについて表示されるフィードバックのレベルを指定します。このオプションは、フィードバック・モードの作成時に必要です。-command
は、コマンドに関する情報および検証のフィードバックを表示する場合に使用します。-quiet
は、エラー・メッセージなど、コマンドに関するきわめて重要なフィードバックのみを表示する場合に使用します。
-delete
このセッションの名前付きフィードバック・モードを削除します。削除するモードの名前が必要です。保持されているモードを完全に削除するには、このオプションを指定して-retain
オプションを使用します。事前定義済のモードは削除できません。
-retain
セッション間で名前付きフィードバック・モードを保存します。保存するモードの名前が必要です。
新しいフィードバック・モードは、/set prompt
、/set format
および/set truncation
コマンドを使用して構成します。
新しいモードを使用して起動するには、/set feedback
コマンドを使用します。
prompt mode "prompt-string" "continuation-prompt-string"
JShell内で入力に対してプロンプトを設定します。モードを入力しなかった場合、すべてのフィードバック・モードについて現在のプロンプトが表示されます。モードのみを入力した場合、そのモードについて現在のプロンプトが表示されます。
プロンプトを定義する場合、次の引数は必須です。
start [-retain] [file[ file...]|option]
/reset
、/reload
または/env
コマンドの次回入力時に使用される起動スクリプトの名前を設定します。複数のスクリプトを入力した場合、スクリプトは入力順に実行されます。スクリプトまたはオプションを入力しなかった場合、現在の起動設定が表示されます。
スクリプトはローカル・ファイルまたは次の事前定義済スクリプトのいずれかにできます。
DEFAULT
デフォルトのエントリをロードします(一般にインポートとして使用されます)。
JAVASE
すべてのJava SEパッケージをインポートします。
PRINTING
print
、println
およびprintf
を、ツール内で使用するためのjshell
メソッドとして定義します。
有効なオプションは次のとおりです。
-retain
オプションは、セッション間で起動設定を保存する場合に使用します。
truncation mode length selector
表示される値の最大長を設定します。モードを入力しなかった場合、すべてのフィードバック・モードについて現在の切捨て値が表示されます。モードのみを入力した場合、そのモードについて現在の切捨て値が表示されます。
切捨て値を定義する場合、次の引数は必須です。
/types [option]
入力されたクラス、インタフェースおよび列挙を表示します。オプションを入力しなかった場合、現在のすべてのアクティブなクラス、インタフェースおよび列強が表示されます。
有効なオプションは次のとおりです。
{name|id|startID-endID}[ {name|id|startID-endID}...]
名前、IDまたはIDの範囲で識別されたクラス、インタフェースおよび列挙型の情報を表示します。IDの範囲の場合は、開始IDと終了IDをハイフンで区切って指定します。リストを指定する場合は、リスト内の項目を空白で区切ります。/list
コマンドを使用してコード・スニペットのIDを参照します。
-all
JShellの起動時に追加されたもの、失敗したも、上書きされたもの、削除されたものを含め、すべてのクラス、インタフェースおよび列挙に関する情報を表示します。
-start
JShellの起動時に追加された起動クラス、インタフェースおよび列挙に関する情報を表示します。
/vars [option]
入力された変数の名前、型および値を表示します。オプションを入力しなかった場合、現在のすべてのアクティブな変数が表示されます。
有効なオプションは次のとおりです。
/?
/help
コマンドと同じです。
/!
最後のスニペットを再実行します。
/{id|startID-endID}[ {id|startID-endID|name}...]
ID、IDの範囲または名前で識別されたスニペットを再実行します。IDの範囲の場合は、開始IDと終了IDをハイフンで区切って指定します。リストを指定する場合は、リスト内の項目を空白で区切ります。リスト内の最初の項目はIDまたはIDの範囲である必要があります。/list
コマンドを使用してコード・スニペットのIDを参照します。
/-n
n個前のスニペットを返します。たとえば、15個のコード・スニペットが入力された場合、/-4
は11個目のスニペットを実行します。コマンドは、カウントに含まれません。
入力のショートカット
次の表では、JShellでのコマンドおよびスニペットの入力に使用可能なショートカットを示します。
入力の編集
JShellの編集機能は、他の一般的なシェルのものと似ています。キーボードのキーおよびキーの組合せが行編集のショートカットになります。[Ctrl]キーとMetaキーは、キーの組合せで使用します。キーボードにメタ・キーがない場合、[Alt]キーをマップしてメタ・キーの機能を提供することがあります。
キーまたはキーの組合せ | 処理 |
---|---|
[Return] |
現在の行を入力します。 |
[←] |
カーソルを左に1文字移動します。 |
[→] |
カーソルを右に1文字移動します。 |
[Ctrl]+[A] |
カーソルを行の先頭に移動します。 |
[Ctrl]+[E] |
カーソルを行の末尾に移動します。 |
Metaキー+[B] |
カーソルを左に1単語移動します。 |
Metaキー+[F] |
カーソルを右に1単語移動します。 |
[Delete] |
カーソルの下にある文字を削除します。 |
[Backspace] |
カーソルの前にある文字を削除します。 |
[Ctrl]+[K] |
カーソルから行の末尾までのテキストを削除します。 |
Metaキー+[D] |
カーソルから単語の末尾までのテキストを削除します。 |
[Ctrl]+[W] |
カーソルから前の空白までのテキストを削除します。 |
[Ctrl]+[Y] |
直近に削除されたテキストを行に貼り付けます。 |
Metaキー+[Y] |
[Ctrl]+[Y]の後に押すと、前に削除したテキストが繰り返し表示されます。 |
JShellセッションの開始および停止の例
JShellはJDKに同梱されています。セッションを開始するには、コマンド行でjshell
を入力します。ようこそメッセージが出力され、コマンドおよびスニペットを入力するためのプロンプトが示されます。
% jshell
| Welcome to JShell -- Version 9
| For an introduction type: /help intro
jshell>
JShellの起動時に自動的にロードされたスニペットを確認するには、/list -start
コマンドを使用します。デフォルトの起動スクリプトは、共通パッケージ用のインポート文です。各スニペットのIDは、起動スニペットであることを示す文字sで始まります。
jshell> /list -start
s1 : import java.io.*;
s2 : import java.math.*;
s3 : import java.net.*;
s4 : import java.nio.file.*;
s5 : import java.util.*;
s6 : import java.util.concurrent.*;
s7 : import java.util.function.*;
s8 : import java.util.prefs.*;
s9 : import java.util.regex.*;
s10 : import java.util.stream.*;
jshell>
セッションを終了するには、/exit
コマンドを使用します。
jshell> /exit
| Goodbye
%
スニペットの入力例
スニペットとは、Javaの文、変数定義、メソッド定義、クラス定義、インポート文および式です。末尾のセミコロンは欠落していても、スニペットの補完時に自動的に追加されます。
次の例に、2つの変数および1つのメソッドの定義と、そのメソッドの実行を示します。スクラッチ変数は、変数が指定されなかったので、結果を保持するために自動的に作成されることに注意してください。
jshell> int a=4 a ==> 4 jshell> int b=8 b ==> 8 jshell> int square(int i1) { ...> return i1 * i1; ...> } | created method square(int) jshell> square(b) $5 ==> 64
スニペットの変更例
変数、メソッドまたはクラスの定義を変更するには、その定義を再入力します。
次の例に、メソッドの定義と、そのメソッドの実行を示します。
jshell> String grade(int testScore) { ...> if (testScore >= 90) { ...> return "Pass"; ...> } ...> return "Fail"; ...> } | created method grade(int) jshell> grade(88) $3 ==> "Fail"
メソッドgrade
をより多くの学生が合格できるように変更するには、メソッド定義を再入力して、合格点を80
に変更します。前のエントリを再入力しなくても済むように上矢印キーを使用してそれらを取得し、if
文に変更を加えます。次の例では、新しい定義を示し、メソッドを再実行して新しい結果を表示します。
jshell> String grade(int testScore) { ...> if (testScore >= 80) { ...> return "Pass"; ...> } ...> return "Fail"; ...> } | modified method grade(int) jshell> grade(88) $5 ==> "Pass"
長さが数行を超えるスニペットの場合または変更箇所が数個を超える場合は、/edit
コマンドを使用してエディタでスニペットを開きます。変更が完了したら、編集ウィンドウを閉じて制御をJShellセッションに戻します。次の例に、そのコマンドと、編集ウィンドウを閉じる際に示されるフィードバックを示します。/list
コマンドは、合格点が85
に変更されたことを表示するのに使用されています。
jshell> /edit grade | modified method grade(int) jshell> /list grade 6 : String grade(int testScore) { if (testScore >= 85) { return "Pass"; } return "Fail"; }
カスタム・フィードバック・モードの作成例
フィードバック・モードにより、表示されるプロンプト、スニペットの入力時に示されるフィードバック・メッセージおよび表示される値の最大長が決まります。事前定義済のフィードバック・モードが提供されています。カスタム・フィードバック・モードを作成するためのコマンドも用意されています。
/set mode
コマンドを使用して、新しいフィードバック・モードを作成します。次の例では、新しいモードmymode
は事前定義済のフィードバック・モードnormal
に基づいており、コマンド・フィードバックの検証が表示されます。
jshell> /set mode mymode normal -command
| Created new feedback mode: mymode
新しいモードはnormal
モードに基づいているため、プロンプトは同じです。次の例では、使用されるプロンプトを確認する方法を示し、プロンプトをカスタム文字列に変更します。最初の文字列は、標準のJShellプロンプトです。2番目の文字列は、複数行のスニペットで追加行を求めるプロンプトを表します。
jshell> /set prompt mymode | /set prompt mymode "\njshell> " " ...> " jshell> /set prompt mymode "\nprompt$ " " continue$ "
表示される値の最大長は、切捨て設定で制御されます。値の型ごとに異なる長さを指定できます。次の例では、全体の切捨て値72、可変値の式に対する切捨て値500を設定します。
jshell> /set truncation mymode 72 jshell> /set truncation mymode 500 varvalue
スニペットの入力後に表示されるフィードバックは、形式設定によって制御され、入力されたスニペットのタイプとそのスニペットについて実行される処理に基づいています。事前定義済のモードnormal
では、メソッドの作成時に文字列created
が表示されます。次の例に、その文字列をdefined
に変更する方法を示します。
jshell> /set format mymode action "defined" added-primary
/set feedback
コマンドを使用して、作成したばかりのフィードバック・モードを使用して開始します。次の例に、使用中のカスタム・モードを示します。
jshell> /set feedback mymode | Feedback mode: mymode prompt$ int square (int num1){ continue$ return num1*num1; continue$ } | defined method square(int) prompt$