Motivation

Was ist das Problem?

  • Das statische Typmodell von Java erfordert, dass Klassen bereits zur Compilezeit bekannt sind
  • Das dynamische Runtime-Modell von Java lädt und bindet Klassen aber erst zur Laufzeit
  • Wie kann man …
    • mehr Dynamik in die Programmierung bekommen?
    • erst zur Laufzeit entscheiden, welche Klasse ein API implementieren soll?
    • dynamisch Typen auf ihre Eigenschaften hin untersuchen, z. B. für Entwicklungsumgebungen?
    • Test-Tools schreiben, die beliebigen Code testen können ohne jedes Mal neu compiliert werden zu müssen?
    • API und Implementierung strikt trennen?

Reflection in Java

  • Reflection bezeichnet die Fähigkeit eines Computerprogramms während der Laufzeit sein eigenes Verhalten und seine Strukturen zu beobachten und zu verändern
  • Reflection zählt zur Metaprogrammierung
    • In Java stellt das Reflection-API den Programmierer:innen die Möglichkeit der Reflection zur Verfügung
    • geladene Klassen untersuchen
    • beliebige Klassen laden
    • Objekte erzeugen
    • Methoden aufrufen
    • Felder Manipulieren

Nachteile von Reflection in Java

Java-Code der per Reflection arbeitet ist

  • teilweise langsamer
  • schwerer zu verstehen
  • mit Sicherheitsbeschränkungen belegt
  • nicht zur Compile-Zeit überprüfbar
  • fehleranfälliger
  • komplex

Copyright © 2025 Thomas Smits