Java 関数のオーバーロード中に、ジェネリック パラメーターが消去され、同じ元の型のジェネリック メソッドのオーバーロードが無効になります。解決策は、
Java 関数のオーバーロード メカニズムにおけるジェネリックスの特殊性
Java 関数のオーバーロードとは、同じクラス内の関数のオーバーロードを指します。複数定義します。同じ名前で異なるパラメータリストを持つメソッド。
ジェネリック型パラメーターがメソッド シグネチャで使用される場合、ジェネリック型パラメーターの使用により、関数のオーバーロード メカニズムにいくつかの特殊な機能が導入されます。
ジェネリック メソッド Type## の消去
#コンパイル時に、ジェネリック型パラメーターは元の型に消去されます。例:public class Test { public <T> void print(T value) { System.out.println(value); } }
print メソッドのシグネチャは次のようになります:
public void print(Object value)
解決策
解決策の 1 つは、ワイルドカード型を使用することです。例:public <T> void print(T value) { System.out.println(value); } public void print(Object value) { System.out.println(value); }
実践的なケース
次のクラス例を考えてみましょう:public class Test { public <T> void add(List<T> list, T element) { list.add(element); } public void add(List<String> list, String element) { list.add(element); } }
add メソッドが含まれています:
以上がJava 関数のオーバーロード メカニズムでジェネリックスを使用する場合の特徴は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。