Java のジェネリック インターフェイス

MD Aminul Islam 2023年10月12日
Java のジェネリック インターフェイス

ジェネリック インターフェイス は、抽象データ型を処理できるインターフェイスです。 表現の詳細から独立して Java コレクションを操作するのに役立ちます。

主に、階層の形で複数の継承を実現するために使用されます。 Generic Interface には、すべてのメソッドのみを含めることができます。

一般的に使用されるクラスとは異なり、Generic Interface にはコンストラクタが含まれていません。

キーワード implements を使用することで、インターフェイスとの接続を簡単に作成できます。 Generic Interface を使用すると、以下のメリットが得られます。

  1. さまざまなデータ型を簡単に実装できます。
  2. 制約を入れることができます。

この記事では、Generic Interface とその使用方法について説明します。 トピックをより簡単にするために、例と説明を使用してトピックについて説明します。

Java のジェネリック インターフェイス

以下に、Generic Interface を使用して、文字配列と整数配列の両方から最大値を見つける例を示します。 この例のコードは次のようになります。

interface FindMinMax<T extends Comparable<T>> {
  T Max();
}
class MyClass<T extends Comparable<T>> implements FindMinMax<T> {
  T[] vals;
  MyClass(T[] o) {
    vals = o;
  }
  public T Max() {
    T Value = vals[0];
    for (int i = 1; i < vals.length; i++) {
      if (vals[i].compareTo(Value) > 0) {
        Value = vals[i];
      }
    }
    return Value;
  }
}

public class GenericInterface {
  public static void main(String args[]) {
    Integer nums[] = {10, 6, 2, 8, 6};
    Character chars[] = {'b', 'r', 'p', 'Z'};
    MyClass<Integer> a = new MyClass<Integer>(nums);
    MyClass<Character> b = new MyClass<Character>(chars);
    System.out.println("The max number is: " + a.Max());
    System.out.println("The max character is: " + b.Max());
  }
}

上記の例では、最初に Max() という名前の抽象メソッドを持つ FindMinMax という名前のインターフェイスを作成しました。 その後、MyClass という名前の別のクラスを作成し、インターフェイスでその抽象メソッドを定義しました。

最後に、1つの整数配列と 1つの文字配列を宣言するクラス GenericInterface を作成しました。 次に、数値用と chars 用の 2つのオブジェクトを作成しました。

最後に、結果を出力として出力しました。 上記のコードを実行すると、次のような出力が表示されます。

The max number is: 10
The max character is: r

重要な注意点は、いったん境界を確立したら、implements 句を使用して再度指定する必要がないということです。

Generic Interface を使用してクラスを実装する場合、すべてのクラスがジェネリックである必要があるため、インターフェイスに渡される型パラメーターを受け取ることができます。

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

著者: MD Aminul Islam
MD Aminul Islam avatar MD Aminul Islam avatar

Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.

LinkedIn