我一直在尋找關於Java中的Reflection API的幾天。 我想從一個Collection類變量中獲取所有對象在一個傳遞的對象中。使用反射從集合類中獲取對象
E.g.
public static <S>void getValue(S s)throws Exception
{
Field[] sourceFields = s.getClass().getDeclaredFields();
for (Field sf : sourceFields)
{
boolean sa = sf.isAccessible();
sf.setAccessible(true);
String targetMethodName = "get" + source.getName().substring(0, 1).toUpperCase()
+ (source.getName().substring(1));
Method m = s.getClass().getMethod(targetMethodName, null) ;
Object ret = m.invoke(s, new Object[] {});
//ret
//check whether it is collection
//if yes
//get its generic type
Type type = f.getGenericType();
//get all the objects inside it
sf.setAccessible(sa);
}
}
爲什麼要使用反射?爲什麼簡單的多態性是不夠的? – Taky
用你現在的代碼,這不足以證明S可能是一個集合。看看http://docs.oracle.com/javase/tutorial/java/generics/wildcards.html看看如何限制S.的類型。 – brimble2010
S只是任何對象我想要獲取包括集合類的每個字段與他們的價值觀。 –