< Java

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

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)