oktatas:programozas:java:java_reflektiv_hozzaferes
Tartalomjegyzék
A Java reflektív hozzáférés
- Szerző: Sallai András
- Copyright © 2025, Sallai András
- Licenc: 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
- 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
oktatas/programozas/java/java_reflektiv_hozzaferes.txt · Utolsó módosítás: 2025/01/06 09:28 szerkesztette: admin