我有一个按命名空间划分的缓存。我想使用类类型来确定要使用的缓存。以下方法给出了我想要实现的目标。我松散地使用cache
这个词。我更感兴趣的是纠正我的设计模式,以便它起作用。
public static DObject getFromCache(String key,Class<T extends DObject> type) {
MyCache cache = getWithName(type.getName());
// ......
type.class value = (type.class) cache.get(key);
// ......
}
其中DObject是命名接口。我如何修复,以便type.class value = (type.class) cache.get(key)
运作良好?我知道这对Scala来说是一个笑话,但我想使用Java。
答案 0 :(得分:0)
T value = type.cast(cache.get(key));
(你可以声明类型T的变量很好,但是类型擦除意味着你不能转换为T.幸运的是Class#cast
可以提供帮助。)