Tartalomjegyzék

< Java

A Java reflektív hozzáférés

Bevezetés

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ő:

Az ArrayList metódusai

src/App.java
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

A Valami osztály

src/App.java
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);
  }
}

Forrás