工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

Javaジェネリック

Javaジェネリック

このチュートリアルでは、Java ジェネリック、ジェネリック クラスとメソッドの作成方法、および例を使用してその利点について学習します。

Java Generics を使用すると、さまざまなタイプのデータ (オブジェクト) で使用できる単一のクラス、インターフェース、およびメソッドを作成できます。

これにより、コードを再利用できます。

注意 :ジェネリック プリミティブ型 (int では機能しません) 、 floatchar など)


Java ジェネリック クラス

あらゆるタイプのデータで使用できるクラスを作成できます。このようなクラスはジェネリック クラスとして知られています。

Java でジェネリック クラスを作成する方法は次のとおりです。

例:ジェネリック クラスを作成する

class Main {
  public static void main(String[] args) {

    // initialize generic class
    // with Integer data
    GenericsClass<Integer> intObj = new GenericsClass<>(5);
    System.out.println("Generic Class returns: " + intObj.getData());

    // initialize generic class
    // with String data
    GenericsClass<String> stringObj = new GenericsClass<>("Java Programming");
    System.out.println("Generic Class returns: " + stringObj.getData());
  }
}

// create a generics class
class GenericsClass<T> {

  // variable of T type
  private T data;

  public GenericsClass(T data) {
    this.data = data;
  }

  // method that return T type variable
  public T getData() {
    return this.data;
  }
}

出力

Generic Class returns: 5
Generic Class returns: Java Programming

上記の例では、GenericsClass という名前のジェネリック クラスを作成しました。 .このクラスは、あらゆるタイプのデータを処理するために使用できます。

class GenericsClass<T> {...}

ここで、T 山かっこ <> 内で使用 型パラメータを示します . Main の内部 クラス、GenericsClass の 2 つのオブジェクトを作成しました


Java ジェネリック メソッド

ジェネリック クラスと同様に、あらゆるタイプのデータで使用できるメソッドを作成することもできます。このようなクラスは Generics Method として知られています。

Java でジェネリック クラスを作成する方法は次のとおりです。

例:ジェネリック メソッドの作成

class Main {
  public static void main(String[] args) {

    // initialize the class with Integer data
    DemoClass demo = new DemoClass();

    // generics method working with String
    demo.<String>genericsMethod("Java Programming");

    // generics method working with integer
    demo.<Integer>genericsMethod(25);
  }
}

class DemoClass {

  // creae a generics method
  public <T> void genericsMethod(T data) {
    System.out.println("Generics Method:");
    System.out.println("Data Passed: " + data);
  }
}

出力

Generics Method:
Data Passed: Java Programming
Generics Method:
Data Passed: 25

上記の例では、genericsMethod という名前のジェネリック メソッドを作成しました。 .

public <T> void genericMethod(T data) {...}

ここで、型パラメータ <T> 修飾子 public の後に挿入されます 戻り型 void の前 .

実際の型 <String> を配置することでジェネリック メソッドを呼び出すことができます と <Integer> メソッド名の前の括弧内。

demo.<String>genericMethod("Java Programming");

demo.<Integer>genericMethod(25);

注意 :型パラメーターを含めずにジェネリック メソッドを呼び出すことができます。たとえば、

demo.genericsMethod("Java Programming");

この場合、コンパイラは、メソッドに渡された値に基づいて型パラメーターを照合できます。


境界型

一般に、type パラメータ 任意のデータ型を受け入れることができます (プリミティブ型を除く)。

ただし、特定の型 (数値型のデータを受け入れるなど) のみにジェネリックを使用したい場合は、境界型を使用できます。

バインドされた型の場合、extends を使用します キーワード。たとえば、

<T extends A>

これは T を意味します A のサブタイプであるデータのみを受け入れることができます .

例:境界型

class GenericsClass <T extends Number> {

  public void display() {
    System.out.println("This is a bounded type generics class.");
  }
}

class Main {
  public static void main(String[] args) {

    // create an object of GenericsClass
    GenericsClass<String> obj = new GenericsClass<>();
  }
}

上記の例では、GenericsClass という名前のクラスを作成しました。表情に注目、表情に注目

<T extends Number> 

ここで、GenericsClass 境界型で作成されます。これは GenericClass を意味します Number の子であるデータ型のみを処理できます (IntegerDouble など)

ただし、String でジェネリック クラスのオブジェクトを作成しました。 .この場合、次のエラーが発生します。

GenericsClass<String> obj = new GenericsClass<>();
                                                 ^
    reason: inference variable T has incompatible bounds
      equality constraints: String
      lower bounds: Number
  where T is a type-variable:
    T extends Number declared in class GenericsClass

Java ジェネリックの利点

1.コードの再利用性

Java のジェネリックの助けを借りて、さまざまなタイプのデータを扱うコードを書くことができます。たとえば、

public <T> void genericsMethod(T data) {...}

ここでは、ジェネリック メソッドを作成しました。これと同じメソッドを使用して、整数データ、文字列データなどの操作を実行できます。

2.コンパイル時の型チェック

タイプ パラメータ of generics は、ジェネリック コードで使用されるデータの型に関する情報を提供します。たとえば、

// using Generics
GenericsClass<Integer> list = new GenericsClass<>();

ここで、GenericClass がわかっています。 Integer で動作しています データのみ。

ここで、Integer 以外のデータをこのクラスに渡そうとすると、プログラムはコンパイル時にエラーを生成します。

3.コレクションで使用

コレクション フレームワークは、Java のジェネリックの概念を使用します。たとえば、

// creating a string type ArrayList
ArrayList<String> list1 = new ArrayList<>();

// creating a integer type ArrayList
ArrayList<Integer> list2 = new ArrayList<>();

上記の例では、同じ ArrayList クラスを使用して、さまざまなタイプのデータを処理しています。

ArrayList に類似 、その他のコレクション (LinkedListQueueMaps など) も Java では一般的です。


Java

  1. Java 最終キーワード
  2. オペレーターの Java インスタンス
  3. Java 継承
  4. Java ネストされた静的クラス
  5. Java匿名クラス
  6. Java シングルトン クラス
  7. Java リフレクション
  8. JavaArrayList クラス
  9. Java スタック クラス
  10. Java ObjectOutputStream クラス
  11. Java ファイル クラス