注意: 私は質問を誤解したので、この答えは質問が求めているものとは反対です。これはコミュニティウィキとして参照できるように残しておきますが、これは元の質問に答えるものではありません。
に共通のサブタイプがType1あり、とType2呼ばれるSuperType場合、最初のタイプがであると言うことは? extends SuperType機能します。
Integerこれは、とDoubleを2つのタイプとして使用し、それらの共通の祖先をNumber次のように使用する小さな例です。
private Map<Integer, String> doSomethingForInteger() {
HashMap<Integer, String> map = new HashMap<Integer, String>();
map.put(10, "Hello");
return map;
}
private Map<Double, String> doSomethingForDouble() {
HashMap<Double, String> map = new HashMap<Double, String>();
map.put(3.14, "Apple");
return map;
}
public Map<? extends Number, String> doSomething(boolean b) {
if (b)
return doSomethingForInteger();
else
return doSomethingForDouble();
}
ここで、メソッドは、渡されたに応じてdoSomething2つのタイプのsを返します。またはメソッドによって返されます。HashMapbooleanHashMap<Integer, String>HashMap<Double, String>doSomething
実際にaを呼び出すdoSomethingと、次のbooleanように実行できます。
Map<? extends Number, String> map1 = doSomething(true);
Map<? extends Number, String> map2 = doSomething(false);
map1で終わりますがHashmap<Integer, String>、をmap2取得しHashmap<Double, String>ます。