How would you invoke arrayList.get() through reflection in 1.4 ??
Hi,
It seems to be pretty hard to invoke the List get(int) method through
reflection. I didn't manage to have my code working with my 1.4
compiler.
To sum up I do the following:
Method method;
method = [some more code...];
if (method.getReturnType().toString().equals("interface
java.util.List"))
{
// how many refs does our List contain ?
int n = sizeOfCollection(method.invoke(root, (Object[])null));
// let's get the actual list
Object list = method.invoke(root, (Object[])null);
// now trying to invoke its 'get()' for every element it
// contains:
Class listClass = Class.forName(list.getClass().getName());
Method m2 = listClass.getDeclaredMethod("get", ???); //<= what to
put here ?
for (int i=0; i<n; i++) {
Object o = m2.invoke(list, i); //<= doesn't compile
...
}
[...]
}
private int sizeOfCollection(Object obj)
{
return new StringTokenizer(obj.toString(), ",").countTokens();
}
In Java5 I managed to reach a point where I could traverse
all references contained in a List, and display them, but in 1.4,
no way: if someone every succeeded doing that, I'd be glad to
hear how you did it... Thanks a lot in advance !
Regards,
Seb