A Java reflektív (reflection, tükrözés) hozzáférés a nyelv egyik jellemzője. A futó program belenézhet önmagába, és módosíthatja a program belső tulajdonságait.
Pascal, C vagy C++ nyelvekben nincs ilyen lehetőség.
A reflektív hozzáférés során megtehető:
import java.lang.reflect.*; public class App { public static void main(String args[]) { try { Class c = Class.forName(args[0]); Method m[] = c.getDeclaredMethods(); for (int i = 0; i < m.length; i++) System.out.println(m[i].toString()); } catch (Throwable e) { System.err.println(e); } } }
Futtatás:
java App java.util.ArrayList
import java.lang.reflect.Method; class Valami { private void sayHello() { System.out.println("Helló reflexió!"); } } public class App { public static void main(String args[]) throws Exception { Valami obj = new Valami(); Method method = Valami.class.getDeclaredMethod("sayHello"); method.setAccessible(true); method.invoke(obj); } }