Przykład:
Poniższy kod wykonany bez refleksji:
Klasa klasa = new Klasa();
klasa.doSth();
W przykładzie tego kodu z refleksją, przeniesiemy nazwę klasy i metody do zmiennych, których wartość można ustalić w czasie wykonywania programu.
Class jeden = Class.forName("Klasa"); Method refleks = jeden.getMethod("doSth", null); refleks.invoke(jeden.newInstance(), null);
Drugi przykład pokaże jak za pomocą refleksji można zdobyć
przydatne informacje o klasie podczas wykonywania programu:
Trzeba pamiętać o zaimportowaniu java.lang.reflect.*;
public class Dwa { public String funkcja(Integer i) { return "Odliczam:" + i"; } } import static java.lang.System.out; import java.lang.reflect.*; public class Main
{ public static void main(String[] args) throws Exception
{ String className = "Dwa"; Class p = Class.forName(className); //dla danej klasy Method[] b = p.getDeclaredMethods(); //pobiera nazwy metod for (int i=0;i<b.length;++i) // dla liczby metod w danej klasie
{ out.print("Klasa " + className + " ma metode '" + b[i].getName().toString() + "'"); out.println(" ktora zwraca wartosc typu " + b[i].getReturnType().toString()); } } }
Brak komentarzy:
Prześlij komentarz