3

私の質問は: 2 つの異なる型を使用できる 1 つのジェネリック メソッドを作成することは可能ですか? たとえば、整数と文字列。

これには実用的な用途はありませんが、可能かどうか知りたいだけです。もしそうなら、どのように?:)

4

4 に答える 4

2

これにはジェネリックを使用する必要はありません。メソッドをオーバーロードできます。例えば

public void method(Integer i){}

public void method(String s){}

整数でメソッドを呼び出すと、最初のメソッドが呼び出されます。文字列で呼び出すと、2 番目のメソッドが呼び出されます。

于 2012-11-08T09:50:13.557 に答える
1

おそらく、2 つの異なるタイプのパラメータのことでしょうか?

String パラメータに 1 つのメソッドを使用し、別のメソッドを使用して整数を取り、それを String バージョンに渡すことができます。

于 2012-11-08T09:48:38.643 に答える
1

例のタイプは最終的なものであるため、適切ではありません。これは、それらを使用してジェネリック パラメーターを制限することはできないことを意味します。

したがって、そのタイプの答えは 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 つの無関係な型に対して有効な汎用パラメーターを作成することはできません。これでは意味がありません。ジェネリック型の主なタスクは、型の安全性を提供することです。一般に、それらを使用するときは、クラスではなくインターフェイスで操作する必要があります。

于 2012-11-08T09:49:35.073 に答える
0

メソッドで整数と文字列を受け入れたい場合は、以下のアプローチを試してください。

  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){

}
于 2012-11-08T09:54:25.900 に答える