//遺留代碼將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