// Code héritageConvertir le code hérité java en générique - comment remplacer l'objet avec le type?
void setCacheValue(String name, Object value){
getServletContext().setAttribute(name, value);
}
Object getCacheValue(String name){
return getServletContext().getAttribute(name);
}
// donc je veux utiliser générique pour "type sécurité"
// first, set method seems working perfectly
<T> void setCacheObject(String name, T value){
getServletContext().setAttribute(name, value);
}
// vient donc ici la peine
<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?
}
// C'est ce que je ce que pour atteindre dans mon propre code de l'appelant:
{
double x = 1.2;
setCacheValue("x", x);
//...
// later
Double value = getCacheValue("x");
// too bad cannot use primitive type - it cannot handle null
}
Alors, quelle est la bonne façon de le faire?
+ problème commun - approche standard – leonbloy
très bien. J'ai trouvé que le cast de classe fait deux choses: il supprime l'avertissement de compilation, et il vérifie le type au moment de l'exécution - bien qu'il soit peut-être trop tard, mais il est préférable de ne pas vérifier du tout. (avec un prix d'avoir à passer un paramètre supplémentaire) – joejax