/** * Klasa za rad sa refleksijama * * @author Guess * @version 1.0 */ import java.lang.reflect.*; import java.io.*; public class Refleksije { public static void main(String [] argumenti) { BufferedReader ulaz = new BufferedReader(new InputStreamReader(System.in)); // Uzmimam klasu try { Class klasa = Class.forName(argumenti[0]); // Ispis svih konstruktora System.out.println("Konstruktori: "); Constructor[] konstruktori = klasa.getConstructors(); for(int i=0; i < konstruktori.length; i++) System.out.println(i + ". " + konstruktori[i].toString()); // Ispis svih metoda System.out.println("\nMetode: "); Method[] metode = klasa.getMethods(); for(int i=0; i < metode.length; i++) System.out.println(i + ". " + metode[i].toString()); // Ispis svih atributa System.out.println("\nAtributi: "); Field[] atributi = klasa.getFields(); for(int i=0; i < atributi.length; i++) System.out.println(i + ". " + atributi[i].toString()); System.out.print("\nIzaberite redni broj konstruktora za kreiranje objekta: "); int izbor = Integer.parseInt(ulaz.readLine()); if(izbor >= konstruktori.length) { System.out.println("Greska: konstruktor ne postoji!"); System.exit(0); // prekid programa } Class pvek[] = konstruktori[izbor].getParameterTypes(); for (int j = 0; j < pvek.length; j++) System.out.println("parametar #" + j+1 + ": " + pvek[j]); Object arglist[] = new Object[pvek.length]; for(int i = 0; i < pvek.length; i++) { System.out.print("Unesite parametar #" + (i+1) + ": "); int izbor1 = Integer.parseInt(ulaz.readLine()); arglist[i] = new Integer(izbor1); } Object obj = konstruktori[izbor].newInstance(arglist); // primer poziva metode Method met = klasa.getMethod("ispisiX"); met.invoke(obj); } catch (Exception e) { System.out.println(e); } } }