在地图上执行泛型

时间:2012-01-29 18:03:27

标签: java generics

我正在尝试编写一个简单的缓存类。缓存本质上是从列到列表的映射。 我想以一种方式声明地图,以强制列表项类与键的类相同。以下内容:

class Cache {
    private static Map<Class<? extends CodedEntity>, List<? extends CodedEntity>> map;
}

是不够的,因为它不会强制执行(在其声明中)我想要的东西。 地图需要是静态的,将类声明为T是没有意义的,因为我不希望它被限制为单一类型。是否有一种语法方法来实现这一目标?

1 个答案:

答案 0 :(得分:4)

你的地图是私有的,你为什么不在accessor和mutator方法中强制执行你的需求?

public <T extends CodedEntity> void addToCache(Class<T> key, List<T> values) {
    map.put(key, values);
}

public <T extends CodedEntit> List<T> getFromCache(Class<T> key) {
    return (List<T>) map.get(key);
}