
Untitled
By: a guest on
Jun 9th, 2012 | syntax:
Java | size: 1.61 KB | hits: 21 | expires: Never
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Scanner;
public class Reflecter {
private Class<?> classe;
private ArrayList<String> listaClassi=new ArrayList<String>();
public void getListaClassi(String lista){
Scanner s=new Scanner(lista);
s.useDelimiter(" ");
while(s.hasNext()){
listaClassi.add(s.next());
}
}
public void creaClasse(){
assert (listaClassi.size()>=0): "Errore nella creazione della lista delle classi";
int i=1;
for(String temp: listaClassi){
System.out.println(i + ")" + temp);
i++;
}
Scanner s=new Scanner(System.in);
int scelta=s.nextInt();
try {
classe=Class.forName(listaClassi.get(scelta-1));
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void invocaMetodo(){
assert(classe!=null);
Method[] metodi=classe.getDeclaredMethods();
int i=1;
for(Method temp: metodi){
System.out.println(i + ")" + temp);
i++;
}
Scanner s=new Scanner(System.in);
int scelta=s.nextInt();
Method metodoScelto=metodi[scelta-1];
Class<?>[] parametri=metodoScelto.getParameterTypes();
try {
if(parametri.length==0)
metodoScelto.invoke(classe);
else
metodoScelto.invoke(classe,parametri);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}