Java 9のJShellでクラスとインターフェースを宣言する方法
JShellは、Java 9から導入された対話型シェル(REPL)です。main()メソッドを用意したり、実行前にコードをコンパイルしたりする必要がなく、JavaやJava APIのプロトタイピング、デバッグ、学習を手軽に行えます。この記事では、JShell上でクラスとインターフェースを宣言する方法を具体例とともに解説します。
クラスの宣言
JShellでは、通常のJava言語でコードを書くときとまったく同じ感覚でクラスを宣言できます。宣言が完了したタイミングをJShellが自動的に検出し、「created class」というメッセージで通知してくれるのが特徴です。
以下のコードスニペットでは、フィールドを2つ(empName、age)とメソッドを1つ(empData())持つEmployeeクラスを宣言しています。
C:\Users\User>jshell
| Welcome to JShell -- Version 9.0.4
| For an introduction type: /help intro
jshell> class Employee {
...> String empName;
...> int age;
...>
...> public void empData() {
...> System.out.println("Employee Name is: " + empName);
...> }
...> }
| created class Employee
次に、Employeeクラスのインスタンスを作成し、各フィールドに値を設定してメソッドを呼び出してみましょう。
jshell> Employee emp = new Employee() emp ==> Employee@73846619 jshell> emp.empName = "Adithya" $3 ==> "Adithya" jshell> emp.age = 20 $4 ==> 20 jshell> emp.empData() Employee Name is: Adithya
このように、JShellでは1行ずつ入力しながら即座に結果を確認できるため、クラスの動作検証や学習に非常に便利です。
インターフェースの宣言
インターフェースもクラスと同様の手順で宣言できます。宣言が完了すると、JShellがそれを検出して結果を表示します。
以下のコードスニペットでは、3つの抽象メソッド(eat()、move()、sleep())を持つAnimalインターフェースを宣言しています。
jshell> interface Animal {
...> public void eat();
...> public void move();
...> public void sleep();
...> }
| created interface Animal
続いて、Animalインターフェースを実装したCatクラスを定義してみます。ここでは抽象メソッドが1つもオーバーライドされていないため、エラーが発生します。この挙動は、通常のJava言語における「クラスがインターフェースを実装する場合のルール」と完全に同じです。
jshell> class Cat implements Animal {
...> }
| Error:
| Cat is not abstract and does not override abstract method sleep() in Animal
| class Cat implements Animal {
| ^----------------------------
エラーメッセージには、どの抽象メソッドが未実装なのかが具体的に示されるため、JShell上でも文法チェックや設計の妥当性確認を効率的に行えます。
まとめ
JShellを使えば、クラスやインターフェースの宣言からインスタンス生成、メソッド呼び出しまでを、コンパイル作業なしに対話的に試せます。小さなコード断片の検証やJavaの仕様確認など、日々の開発や学習の強力なツールとして活用してみてください。
-
Java 9のJShellでスニペットを保存・編集・削除する方法
Java Shell、通称JShellは、Java 9で正式に導入された公式のREPL(Read-Evaluate-Print-Loop)ツールです。対話型シェルを提供し、main()メソッドを作成したり、コードを実行前にコンパイルしたりすることなく、迅速なプロトタイピングやデバッグを行うことができます。JShellは、コマンドプロンプトで「jshell」と入力するだけで簡単に起動できます。この記事では、JShellで作成したスニペット(コード断片)を保存、編集、削除する方法を解説します。スニペットを保存する(/save)スニペットのソースコードをファイルに保存するには、「/save [-al
-
Javaのインターフェースとは?基本構文からクラスとの違いまで徹底解説
Javaのインターフェースとはインターフェースは、Javaにおける参照型の一つで、クラスとよく似た性質を持っています。その本体は抽象メソッドの集まりであり、クラスがインターフェースを実装することで、その抽象メソッドを引き継ぐ仕組みになっています。抽象メソッドに加えて、インターフェースには定数、デフォルトメソッド、静的メソッド、ネストされた型を含めることも可能です。ただし、メソッドの本体(処理内容)が存在するのは、デフォルトメソッドと静的メソッドのみです。インターフェースの記述方法はクラスと似ていますが、両者の役割は異なります。クラスがオブジェクトの属性や振る舞いを記述するのに対し、インターフェ