Sobes.tech
Junior — Middle

Lehet-e egy osztály privát metódusát kívülről hívni?

sobes.tech MI

Válasz az MI-től

Java-ban nem lehet közvetlenül hívni egy osztály privát metódusát annak definícióján kívülről, mivel a private módosító csak az osztályon belül teszi elérhetővé.

Azonban a reflexió segítségével hozzáférhetünk a privát metódusokhoz és meghívhatjuk azokat, még ezek korlátozásai ellenére is. Például:

import java.lang.reflect.Method;

class MyClass {
    private void secret() {
        System.out.println("Privát metódus hívva");
    }
}

public class Test {
    public static void main(String[] args) throws Exception {
        MyClass obj = new MyClass();
        Method method = MyClass.class.getDeclaredMethod("secret");
        method.setAccessible(true); // eltávolítja a hozzáférési korlátozást
        method.invoke(obj); // privát metódus hívása
    }
}

Így a normál hívás nem lehetséges, de a reflexió lehetővé teszi ennek a korlátozásnak az áthidalását.