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