Java 在泛型中使用Map-in方法

Java 在泛型中使用Map-in方法,java,generics,Java,Generics,我试图确定在以下情况下是否可以使用泛型。最好用我的代码来描述它。(此代码只是一个示例;我取出了与我遇到的问题无关的大部分代码。) 公共类FooBar{ 公共地图转换模型列表( 地图信息(地图){ //做些事情。。。 } } 公共类MyClient{ 公共无效剂量测定法(){ Map因为它扩展了MyModel,所以您是说您只需要该类型 只使用MyModel而不使用?扩展MyModel是有效的 Class<MyModel> 类 然后,任何扩展此对象的对象(这将是所有的汽车和卡车,必须

我试图确定在以下情况下是否可以使用泛型。最好用我的代码来描述它。(此代码只是一个示例;我取出了与我遇到的问题无关的大部分代码。)

公共类FooBar{
公共地图转换模型列表(
地图信息(地图){
//做些事情。。。
}
}
公共类MyClient{
公共无效剂量测定法(){

Map因为它扩展了MyModel,所以您是说您只需要该类型

只使用MyModel而不使用?扩展MyModel是有效的

Class<MyModel>

然后,任何扩展此对象的对象(这将是所有的汽车和卡车,必须调用MyModel的超级方法。这将意味着它们都是这种类型。

尽管
汽车和
卡车的公共超类是
MyModel
,但
列表和
列表的公共超类是
对象。类型ode>Map您需要进一步清理示例代码。我不确定约束应该来自myClient类中的何处,因为该类定义在FooBar之外,FooBar确实定义了一个。我可以猜到一些其他的打字错误,但不希望。可能的重复我已经清理了myClient类中的代码。@acvcu:您的myClient类仍然无法编译。我不太理解您建议的解决方案。我不需要使用Map
List
public class FooBar {

    public Map<Class<? extends MyModel>, List<? extends MyModel>> convertToModelList(
            Map<String, Class<? extends MyModel>> infoMap) {

        // do stuff...
    }
}
Map<String, Class<Truck>> 
Map<Class<Truck>, List<Truck>>
public class MyClient {

public void doSomething() {
    Map<String, Class<? extends MyModel>> oldMap = new HashMap<String, Class<? extends MyModel>>();
    oldMap.put ("car", Car.class);
    oldMap.put("truck", Truck.class);

    FooBar f = new FooBar();
    Map<Class<? extends MyModel>, List<? extends MyModel>> newMap = f
            .convertToModelList(oldMap);

            // I'm trying to avoid this cast
            List<Truck> trucks = (List<Truck>)newMap.get(Truck.class);
}
}
Class<MyModel>