HOWTO · Java

Java のジェネリック

このチュートリアルでは、Java の Generics について説明します。

クラスのオブジェクトの一般的な型を宣言する場合、型の安全性を提供するための機能は含まれていません。 ただし、ジェネリックを使用して、この安全機能をオブジェクトに簡単に追加できます。

Java で使用できるジェネリックには 2 種類あります。1つ目はジェネリック メソッドで、2つ目はジェネリック クラスです。

ジェネリック メソッドを使用すると、型パラメーターが含まれ、実際の型がこれらのパラメーターを引用するため、より一般的な方法でメソッドを使用できます。

一方、ジェネリック クラスは、ほとんど非ジェネリック クラスに似ています。

ただし、唯一の違いは、型パラメーターのセクションがあることです。 さらに、複数のパラメータを使用できます。

この記事では、Java のジェネリックについて説明します。 また、ジェネリックを示す例を使用してトピックについて説明し、これらのコードを部分的に説明します。

Generics が Java で型を保証する方法

Generics クラスがどのようにプログラムの型を保証するかについて説明しましょう。 プログラムを作成してコンパイルしようとすると、Generic クラスは、コンパイル中に型の誤用が発生したかどうかをチェックします。

互換性のない型が見つかった場合、エラーが表示され、コンパイルは失敗します。

Java のジェネリック メソッドを使用した例

以下の例では、ジェネリック メソッドの実装を確認します。 コードは次のようになります。

class GenericMethod {
  // Declaring a generic method
  static <T> void MyDisplay(T data) {
    System.out.println("Your input is: " + data);
  }

  // Our controlling method ( Main method )
  public static void main(String[] args) {
    // Calling a generic method with an Integer argument
    MyDisplay(17);

    // Calling a generic method with a String argument
    MyDisplay("This is a string");

    // Calling a generic method with a double argument
    MyDisplay(16.0);
  }
}

上記の例の各行の目的については、既にコメントしました。 上記のコード例を実行すると、以下のような出力が得られます。

Your input is: 17
Your input is: This is a string
Your input is: 16.0

Java のジェネリック クラスの例

以下の例では、ジェネリック クラスの実装を確認します。 ここで、ジェネリック クラスの名前は <T> 型の GenericClass です。

コードは次のようになります。

class GenericClass<T> {
  // Declaring a "T" type object
  T MyObj;
  GenericClass(T MyObj) {
    this.MyObj = MyObj;
  } // Creating a constructor
  public T getObject() {
    return this.MyObj;
  }
}

// Our controlling method ( Main method )
class Main {
  public static void main(String[] args) {
    // Declaring an instance of Integer type
    GenericClass<Integer> IntObj = new GenericClass<Integer>(19);
    System.out.println("The number is: " + IntObj.getObject());

    // Declaring an instance of String type
    GenericClass<String> StrObj = new GenericClass<String>("This is a string.");
    System.out.println(StrObj.getObject());
  }
}

上記の例の各行の目的については、既にコメントしました。 上記のコード例を実行すると、以下のような出力が得られます。

The number is: 19
This is a string.

ここで重要なのは、パラメーターの型として、intcharfloat、または double などのプリミティブを使用できないことです。

ここで共有されているコード例は Java であり、システムに Java が含まれていない場合は、環境に Java をインストールする必要があることに注意してください。