1
public static <T> T inCache(T obj) throws ClassNotFoundException {
String[] token = validateCookie(); //gives me to strings
if (token == null)
return null;
if (Cache.get(token[0]) != null) {
if (Cache.get(token[0]).getClass() == Class.forName(token[1])
&& obj.getClass() == Cache.get(token[0]).getClass()) {
T test = (T) Cache.get(token[0]);
return test;
}
}
return null;
}
上面的代码是完全错误的。Java反射/泛型
Basicly我想要做这样的事情:
- 我想设置的类在我的功能。例如
inCache<User>();
检查我从缓存中取出的对象是否具有与之前指定的类相同的类。
(obj.getClass == User.class)
如果类匹配,将对象转换为类并返回它。
return (User)obj
我想这样使用它。
User user = inCache<User>();
+1。详细阐述一下。 。 。而不是'T test =(T)...',那么你会写'T test = clazz.cast(...)'。 (请参见http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#cast(java.lang.Object)](http://docs.oracle.com/javase /7/docs/api/java/lang/Class.html#cast%28java.lang.Object%29)。) – ruakh 2012-08-06 14:39:04
@ruakh投给'T'应该也能工作,不是吗? – Thomas 2012-08-06 14:44:27
非常感谢你:)。这解决了我的问题 – 2012-08-06 14:46:11