ありませんが、それは可能ではないですが、あなたは、2つの個別のメソッドを作成することができます:あなたは取り扱い方法でそれらをミックスしたいあなたも、このようにそれを書くことができた場合は
public <T extends Map> void test(T t) {
// do the map part
}
public <T extends Collection> void test(T t) {
// do the collection part
}
を:
private void mixedTest(Object t) {
if (t instanceof Map) {
// map part
} else if (t instanceof Collection) {
// collection part
} else {
throw new RuntimeException("Unknown object");
}
}
電話:
public <T extends Map> void test(T t) {
mixedTest(t);
}
public <T extends Collection> void test(T t) {
mixedTest(t);
}
しかし、とにかく素晴らしいコードにつながるかどうかはわかりません。異なるタイプのオブジェクトのための異なる実装で最初の部分に固執します。
'Map'か' Colleciton'かどうかわからない場合は、 't'をどのように使いますか? – aioobe
可能な複製(http://stackoverflow.com/questions/745756/java-generics-wildcarding-with-multiple-classes)と、それはあなたの実装をより汚く –