Me la son cavata brutalmente così:
codice:
private Class[] extractParameters(String signature) {
int start = signature.indexOf('(') + 1;
int end = signature.indexOf(')');
signature = signature.substring(start, end);
List<Class> l_p = new LinkedList<Class>();
for (String s : signature.split("[ ]*,[ ]*")) {
try {
if (s.equals(""))
break;
l_p.add(Class.forName(s));
} catch (ClassNotFoundException e) {
if (s.equals("int"))
l_p.add(int.class);
else if (s.equals("byte"))
l_p.add(byte.class);
else if (s.equals("short"))
l_p.add(short.class);
else if (s.equals("long"))
l_p.add(long.class);
else if (s.equals("float"))
l_p.add(float.class);
else if (s.equals("double"))
l_p.add(double.class);
else if (s.equals("boolean"))
l_p.add(boolean.class);
else if (s.equals("char"))
l_p.add(char.class);
else
throw new RuntimeException(
"Impossibile risalire al tipo del parametro.");
}
}
Class[] p = new Class[l_p.size()];
p = l_p.toArray(p);
return p;
}
Funzionare funziona, anche se non mi sembra proprio il massimo...