Avatar ·

Was ist Reflektion (Reflection) in Java und wofür wird sie benötigt?

Hallo zusammen! Ich lerne seit etwa einem halben Jahr Java, schreibe einfache Anwendungen und bin auf den Begriff "Reflektion" (Reflection API) gestoßen. Ich habe die Oracle-Dokumentation gelesen, aber nicht ganz verstanden. \n\nIch habe eine einfache Klasse:\n\n```java\npublic class User {\n private String name;\n private int age;\n\n public User(String name, int age) {\n this.name = name;\n this.age = age;\n }\n\n public void sayHello() {\n System.out.println("Hallo, ich bin " + name);\n }\n\n private void secretMethod() {\n System.out.println("Geheime Methode!");\n }\n}\n```\n\nIch verstehe, dass wir normalerweise ein Objekt mit `new User("Ivan", 25)` erstellen und Methoden direkt aufrufen. Aber wozu muss man Informationen über die Klasse während der Laufzeit des Programms abrufen? Wann könnte das nützlich sein?\n\nMich verwirrt, dass Reflektion den Zugriff auf private Felder und Methoden ermöglicht und sie aufrufen kann. Verstößt das nicht gegen die Kapselung? Und gibt es Alternativen zur Reflektion?\n\nErklärt es mir bitte anhand einfacher Beispiele: was ist...