//遗留代码将java遗留代码转换为泛型 - 如何用类型替换Object?
void setCacheValue(String name, Object value){
getServletContext().setAttribute(name, value);
}
Object getCacheValue(String name){
return getServletContext().getAttribute(name);
}
//所以我要使用通用的 “类型安全”
// first, set method seems working perfectly
<T> void setCacheObject(String name, T value){
getServletContext().setAttribute(name, value);
}
//然后,来这里的麻烦
<T> T getCacheValue(String name){
// of course, I cannot change servlet class - it returns Object type
Object value = getServletContext().getAttribute(name);
// would this work:
return (T) value;
// this cast is meaningless... but how should I do it?
}
//这是我在清洁呼叫代码中实现的目标:
{
double x = 1.2;
setCacheValue("x", x);
//...
// later
Double value = getCacheValue("x");
// too bad cannot use primitive type - it cannot handle null
}
那么,什么是这样做的正确方法是什么?
+1常见问题 - 标准方法 – leonbloy 2010-05-06 19:02:05
很好。我发现类投射做了两件事:它抑制了编译警告,并且它在运行时检查了类型 - 尽管它可能为时已晚,但总比不检查更好。 (价格不得不通过一个额外的参数) – joejax 2010-05-06 19:34:02