ジェネリック メソッドには、操作可能なデータ型を指定する型パラメーターがあります。ワイルドカードは不明な型を表し、上位のワイルドカードはその型が特定の型のサブクラスまたはそれ自体であることを指定し、下位のワイルドカードはその型が親クラスまたはそれ自体であることを指定します。
#Java ジェネリック メソッドとワイルドカードの違い
はじめに
Generics Itは、開発者がデータ型の非互換性を心配することなく再利用可能なコードを作成できる Java の強力なツールです。ジェネリック メソッドとワイルドカードは、ジェネリックの機能をさらに強化する 2 つのメカニズムです。この記事では、それらの違いを説明し、実際の例を通してそれらの使用方法を示します。ジェネリック メソッド
ジェネリック メソッドは、型パラメーターを持つメソッドです。型パラメーターは、メソッドが使用できるデータ型を指定します。たとえば、次のジェネリック メソッドは、任意の型のリストを操作できます:public static <T> void printList(List<T> list) { for (T item : list) { System.out.print(item + " "); } System.out.println(); }
List<String> names = new ArrayList<>(); names.add("John"); names.add("Mary"); printList(names); // 输出:John Mary
Wildcards
ワイルドカードは、未知の型を表すために使用される特別な構文です。これらは、ジェネリックの上限または下限を作成するためによく使用されます。public static <T> List<Class<?>> getSuperclasses(List<? extends T> list) { List<Class<?>> superclasses = new ArrayList<>(); for (T item : list) { superclasses.add(item.getClass().getSuperclass()); } return superclasses; }
実用的なケース
次のケースを考えてみましょう。Animal インターフェイスを実装する Animal クラスがあり、動物のリストを出力するメソッドが必要です。 #汎用メソッドあらゆる種類の動物を印刷するための汎用メソッドを作成できます:
public static <T extends Animal> void printAnimals(List<T> animals) { for (T animal : animals) { System.out.println(animal.getName()); } }
ワイルドカードを使用して、Animal のサブクラスを表すこともできます。
public static void printAnimals(List<? extends Animal> animals) { // 使用上限通配符 for (Animal animal : animals) { // 使用上限通配符 System.out.println(animal.getName()); } }
どちらの場合も、単一のメソッドを使用して、さまざまな種類の動物のリストを出力できます。ただし、ジェネリック メソッドは、型パラメータに Animal インターフェイスの継承を強制するため、型安全性を提供しますが、ワイルドカードはこの保証を提供しません。
以上がJava の汎用メソッドとワイルドカードの使用の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。