Java
 Computer >> コンピューター >  >> プログラミング >> Java

Java 9のJShellで守るべきルールまとめ!REPLツールの使い方と注意点を解説

Java 9では、対話型のREPL(Read-Evaluate-Print-Loop)ツールであるJShellが導入されました。JShellを使うことで、コードスニペットを実行しながら、その結果を即座に確認できます。ここでいうスニペット(snippet)とは、標準的なJava構文で記述できる1つの命令文を指し、単一の式、ステートメント、または宣言に相当します。

JShellは学習やプロトタイピングに非常に便利なツールですが、利用する際にはいくつか守るべきルールがあります。以下にその主なルールをまとめます。

JShellで従うべき主なルール

  • スニペットには、import宣言、クラス宣言、メソッド宣言、インターフェース宣言、フィールド宣言、ステートメント、および一次式(primary expression)などが含まれます。
  • package宣言は許可されていません。JShellのコードは、一時的な「JShell」パッケージの配下に自動的に配置されます。
  • アクセス修飾子であるpublicprotectedprivate、および修飾子のfinalstaticは、トップレベルの宣言では使用できません。指定した場合は警告とともに無視されます。
  • 修飾子defaultsynchronizedは、トップレベルの宣言では一切使用できません。ただし、ネストされたコンテキスト(クラスやメソッド内部)では使用可能です。
  • abstract修飾子はクラスに対してのみ許可されます。
  • ユーザーの入力が不完全な場合(例:System.outまで入力してprintln部分を省略した場合)、JShellの自動補完APIが追加の入力を促すプロンプトを表示します。
  • 入力が完全でもセミコロン(;)がない場合は、JShellが自動的にセミコロンを補完して実行してくれます。

サンプルコード:Employeeクラスの作成とインスタンス化

以下のサンプルコードでは、必要なgetterメソッドを持つEmployeeクラスを作成し、new演算子を使ってインスタンス化しています。トップレベルでのprivateやpublicなどの修飾子の扱いにも注目してください。

jshell> class Employee {
   ...>     private String firstName;
   ...>     private String lastName;
   ...>     private String designation;
   ...>     public Employee(String firstName, String lastName, String designation) {
   ...>        this.firstName = firstName;
   ...>        this.lastName = lastName;
   ...>        this.designation = designation;
   ...>     }
   ...>     public String getFirstName() {
   ...>        return firstName;
   ...>     }
   ...>     public String getLastName() {
   ...>        return lastName;
   ...>     }
   ...>     public String getDesignation() {
   ...>        return designation;
   ...>     }
   ...>     public String toString() {
   ...>        return "Name = " + firstName + ", " + lastName + " | " +
   ...>               "designation = " + designation;
   ...>     }
   ...> }
| created class Employee

jshell> Employee emp = new Employee("Sai", "Adithya", "Content Developer");
emp ==> Name = Sai, Adithya | designation = Content Developer

このように、JShellではクラス定義からインスタンス生成までを対話的に試せるため、小さなコード断片の動作検証やJavaの仕様確認に最適です。上記のルールを理解しておくことで、より効率的にJShellを活用できるでしょう。

  1. Java 9 JShellの起動スクリプト(DEFAULT・JAVASE・PRINTING)の違いと使い方

    JShellは、Java 9で導入された対話型のJavaシェルツールです。コマンドラインプロンプトから起動でき、入力したコードをその場で評価して結果を即座に表示します。いわゆるREPL(Read-Evaluate-Print-Loop:読み込み→評価→表示→繰り返し)ツールとして動作するため、コード断片の動作確認やAPIの学習に非常に便利です。 起動スクリプトの指定方法(--startupフラグ) JShellでは、起動時にスクリプトを読み込むことで、あらかじめ定義済みのimport文や便利なメソッドを使える状態でセッションを開始できます。起動スクリプトを指定するには「--startup」フ

  2. Java 9のJShellで使える「/edit」コマンドの種類と使い方

    JShellは、Java 9で導入されたコマンドラインツールです。main()メソッドを用意しなくても、宣言・ステートメント・式をその場で評価できるのが大きな特徴です。さらに、JShellにはJShell Edit Padという簡易テキストエディタが組み込まれており、「/edit」コマンドで起動することで、入力済みのコードを手軽に編集できます。 /editコマンドの3つの形式 JShellで利用できる「/edit」コマンドには、次の3つの形式があります。 /edit /edit [ID] /edit [コード名] /edit:引数なしで実行すると、現在アクティブなすべてのコードがテキストエデ