[[:oktatas:programozás:java|< Java]]
====== A Java reflektív hozzáférés ======
* **Szerző:** Sallai András
* Copyright (c) 2025, Sallai András
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]]
* Web: https://szit.hu
===== 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ő:
* Osztályok, metódusok, mezők lekérdezése futási időben.
* Objektum típusának meghatározása, metódusok listázása és mások.
* Privát mezők és metódusok elérése
* Metódus meghívása dinamikusan, az osztály nevének ismerete nélkül.
===== Az ArrayList metódusai =====
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 =====
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 =====
* https://www.oracle.com/technical-resources/articles/java/javareflection.html (2025)