如何使用作为参数传递的类类型来定义局部变量

时间:2014-04-19 14:39:26

标签: java

我有一个按命名空间划分的缓存。我想使用类类型来确定要使用的缓存。以下方法给出了我想要实现的目标。我松散地使用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。

1 个答案:

答案 0 :(得分:0)

T value = type.cast(cache.get(key));

(你可以声明类型T的变量很好,但是类型擦除意味着你不能转换为T.幸运的是Class#cast可以提供帮助。)