はい:
public class Foo<T extends MyClass1> {
private Map< Class<T>, List<? extends MyClass2<? extends MyClass3, T>>> bar;
...
}
一般的な方法でこれを行うこともできます。クラスを定義するとき、またはこのMapをインスタンス化するメソッドを呼び出すときは、保証を行う場所(さらに、Mapがインスタンス化される場所)によって異なります。
アップデート:
このマップには1つの要素しか含まれないという(正しい)観察に応えて、おそらく質問者は代わりにこれを念頭に置いていました。
public class Foo {
private Map<Class<? extends MyClass1>, List<? extends MyClass2<? extends MyClass3, ? extends MyClass1>>> bar;
public <T extends MyClass1> void add(Class<T> myClass, List<? extends MyClass2<? extends MyClass3, T>>> myList) {
bar.put(myClass, myList);
}
...
}
これがプライベートマップに要素を追加する唯一の方法であると仮定すると、タイプが常に一致することが保証されます。