私の質問は: 2 つの異なる型を使用できる 1 つのジェネリック メソッドを作成することは可能ですか? たとえば、整数と文字列。
これには実用的な用途はありませんが、可能かどうか知りたいだけです。もしそうなら、どのように?:)
これにはジェネリックを使用する必要はありません。メソッドをオーバーロードできます。例えば
public void method(Integer i){}
public void method(String s){}
整数でメソッドを呼び出すと、最初のメソッドが呼び出されます。文字列で呼び出すと、2 番目のメソッドが呼び出されます。
おそらく、2 つの異なるタイプのパラメータのことでしょうか?
String パラメータに 1 つのメソッドを使用し、別のメソッドを使用して整数を取り、それを String バージョンに渡すことができます。
例のタイプは最終的なものであるため、適切ではありません。これは、それらを使用してジェネリック パラメーターを制限することはできないことを意味します。
したがって、そのタイプの答えは No です。
しかし、Java でできることは次のとおりです。
Object 型を受け入れるメソッドを作成できます。
public <T> void doStaff(T obj) {
}
String が final であるため、CharSequence に限定されたメソッドを作成できます
public <T extends CharSequence> void doStaff(T str){
}
複数のインターフェースに限定されたメソッドを作成できます
public <T extends CharSequence & Comparable<T>> void doStaf(T interf) {
}
しかし、非常に多くの可能性があっても、2 つの無関係な型に対して有効な汎用パラメーターを作成することはできません。これでは意味がありません。ジェネリック型の主なタスクは、型の安全性を提供することです。一般に、それらを使用するときは、クラスではなくインターフェイスで操作する必要があります。
メソッドで整数と文字列を受け入れたい場合は、以下のアプローチを試してください。
public class Test {
public static void main(String[] a) {
method(new String(),new Integer("2"));
}
public static <T extends String, U extends Integer> void method(T t, U u){
}
}
編集:
メソッドが文字列または整数のいずれかを取る単一のパラメーターを取る場合
これを試して :
public static <T extends Comparable<T>> void method(T t){
}