Warum ist es erlaubt, access, Java private Felder per reflection?

Betrachten Sie dieses Beispiel :

import java.lang.reflect.Field;

public class Test {

    public static void main(String[] args) {
        C c = new C();
        try {
            Field f = C.class.getDeclaredField("a");
            f.setAccessible(true);
            Integer i = (Integer)f.get(c);
            System.out.println(i);
        } catch (Exception e) {}
    }
}

class C {
    private Integer a =6;
}

Scheint es unlogisch, dass Sie berechtigt sind, Zugriff auf private Felder von Klassen mit reflection. Warum ist so eine Funktionalität zur Verfügung? Ist es nicht "gefährlich" Zugriff?

Schreibe einen Kommentar