在Map中将泛型类型绑定在一起

时间:2014-06-06 12:53:39

标签: java generics

我有类似的东西作为类

中的字段
Map<Class<? extends Animal>, List<? extends Animal>> map;

我怎么能告诉编译器保证每当我在这个地图中放置东西时,我希望每次类和列表的类型相同(当然我应该能够将键类型更改为任何类当我需要的时候扩展Animal,有效地将两者绑定在一起?

由于

2 个答案:

答案 0 :(得分:0)

您可以将代码包装在方法中添加:

public <T extends Animal> void add(Class<T> key, List<T> value) {
    ...
}

答案 1 :(得分:0)

您可以制作如下自定义地图:

class MyMap<T extends Animal> implements Map<Class<T>, List<T>>{
    // Choose any implementation of Map you want:
    Map<Class<T>, List<T>> map = new HashMap<Class<T>, List<T>>();

    // then delegate every method like this:
    @Override void clear(){
        map.clear();
    }

    // other methods
}

这将为您提供强制执行相同类型的Map

相关问题