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

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の仕様確認など、日々の開発や学習の強力なツールとして活用してみてください。

  1. Java 9のJShellでスニペットを保存・編集・削除する方法

    Java Shell、通称JShellは、Java 9で正式に導入された公式のREPL(Read-Evaluate-Print-Loop)ツールです。対話型シェルを提供し、main()メソッドを作成したり、コードを実行前にコンパイルしたりすることなく、迅速なプロトタイピングやデバッグを行うことができます。JShellは、コマンドプロンプトで「jshell」と入力するだけで簡単に起動できます。この記事では、JShellで作成したスニペット(コード断片)を保存、編集、削除する方法を解説します。スニペットを保存する(/save)スニペットのソースコードをファイルに保存するには、「/save [-al

  2. Javaのインターフェースとは?基本構文からクラスとの違いまで徹底解説

    Javaのインターフェースとはインターフェースは、Javaにおける参照型の一つで、クラスとよく似た性質を持っています。その本体は抽象メソッドの集まりであり、クラスがインターフェースを実装することで、その抽象メソッドを引き継ぐ仕組みになっています。抽象メソッドに加えて、インターフェースには定数、デフォルトメソッド、静的メソッド、ネストされた型を含めることも可能です。ただし、メソッドの本体(処理内容)が存在するのは、デフォルトメソッドと静的メソッドのみです。インターフェースの記述方法はクラスと似ていますが、両者の役割は異なります。クラスがオブジェクトの属性や振る舞いを記述するのに対し、インターフェ