Avatar ·

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

Hallo Kollegen! Ich bin ein Anfänger-Java-Entwickler und schreibe seit etwa einem halben Jahr in dieser Sprache. In letzter Zeit stoße ich in der Dokumentation und in Foren oft auf den Begriff "Reflection". Ich habe ein paar Artikel gelesen, aber das Wesentliche noch nicht ganz verstanden. Erklärt mir bitte in einfachen Worten: Was ist das für ein Tier und wofür wird es überhaupt gebraucht? Mich verwirrt, dass wir in Java normalerweise zur Compile-Zeit mit Klassen und Objekten arbeiten: Klasse geschrieben, Instanz mit new erstellt, Methode aufgerufen – alles klar und vorhersehbar. Reflection hingegen, soweit ich verstanden habe, erlaubt es, zur Laufzeit "in die Klasse hineinzuschauen". Wofür könnte das nötig sein? Wenn ich die Struktur der Klasse kenne, kann ich den Code doch fest schreiben. Bitte gebt mir ein konkretes Beispiel, wo man ohne Reflection nicht auskommt. Angenommen, es gibt diese einfache Klasse:
public class User {
    private String name;
    private int age;

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    privat