ジェネリックスは、Java の 2 つの一般的な問題を解決します。 コードの重複: 異なる型のソートされたリストの作成など、データ型ごとに特定のコードを記述する必要がなくなります。柔軟性が不十分: 汎用キューを使用してさまざまな要素を格納および取得するなど、さまざまなデータ型を使用する際の変更にコードが簡単に適応できます。
ジェネリクスは Java の強力なツールであり、これを使用すると、さまざまな言語で動作するものを作成できます。データ型 動作するコード。ジェネリックスを使用すると、重複した коде エラーを排除し、柔軟性を高め、коде をより堅牢にすることができます。
問題: 重複したコード
# ジェネリックスを使用しない場合、処理するデータ型ごとに特定のコードを記述する必要があり、その結果、コードが重複し、メンテナンスの負担が増加します。 。たとえば、Integer と
String 型の並べ替えられたリストを作成するには、次の 2 つの別々のメソッドを作成する必要があります。
List<Integer> integerList = new ArrayList<>(); integerList.add(10); integerList.add(5); Collections.sort(integerList); List<String> stringList = new ArrayList<>(); stringList.add("John"); stringList.add("Mary"); Collections.sort(stringList);
一般的なソリューションのシナリオ:
ジェネリックを使用すると、任意の型のリストを処理するジェネリック メソッドを定義できます。public static <T extends Comparable<T>> void sortList(List<T> list) { Collections.sort(list); }
T リスト内の項目を指定します。
Comparable インターフェイスを実装すると、自然な順序で比較できるようになります。ジェネリック メソッドを使用して、任意の型のリストを並べ替えることができるようになりました。
List<Integer> integerList = new ArrayList<>(); sortList(integerList); List<String> stringList = new ArrayList<>(); sortList(stringList);
問題: 柔軟性が不十分です
ジェネリックを使用しないと、コードは必要なものに簡単に適応できません。処理されたさまざまなデータ型のバリエーション。たとえば、Integer と
String に
ArrayBlockingQueue を使用する必要がある場合は、2 つの別々のキューを作成する必要があります:
ArrayBlockingQueue<Integer> integerQueue = new ArrayBlockingQueue<>(10); integerQueue.put(10); ArrayBlockingQueue<String> stringQueue = new ArrayBlockingQueue<>(10); stringQueue.put("John");
一般的な解決策:
ジェネリックを使用すると、あらゆる型の要素に対応できるユニバーサル キューを定義できます。public class GenericQueue<T> { private Queue<T> queue; public GenericQueue() { queue = new ArrayBlockingQueue<>(10); } public void put(T element) { queue.offer(element); } public T take() { return queue.poll(); } }
T の型を指定します。キュー内の要素。ユニバーサル キューを使用して、あらゆるタイプの要素を保存および取得できるようになりました。
GenericQueue<Integer> integerQueue = new GenericQueue<>(); integerQueue.put(10); int element = integerQueue.take(); GenericQueue<String> stringQueue = new GenericQueue<>(); stringQueue.put("John"); String element = stringQueue.take();
利点:
以上がJava の一般的な問題を解決するための Java ジェネリックスの適用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。