Kapitel 17. Reflexion, oder "Eine Klasse namens Klasse"
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
17.0 Einleitung
Die Klasse java.lang.Class
und das Reflection-Paket java.lang.reflect
bieten eine Reihe von Mechanismen, um Informationen von der Java Virtual Machine zu erhalten. Diese unter dem Namen " Reflection" bekannten Funktionen ermöglichen es dir, Klassen während des Betriebs zu laden, Methoden und Felder in Klassen zu finden, Listen von ihnen zu erstellen und Methoden in dynamisch geladenen Klassen aufzurufen. Es gibt sogar einen Mechanismus, mit dem du eine Klasse von Grund auf neu erstellen kannst (also eigentlich aus einem Array von Bytes), während dein Programm läuft. So nah wie in Java kommt man den magischen, geheimen Interna der Java-Maschine nicht.
Die JVM selbst ist ein großes Programm, das normalerweise in C und/oder C++ geschrieben ist und die Abstraktion der Java Virtual Machine implementiert. Du kannst den Quellcode für OpenJDK und andere JVMs über das Internet beziehen, den du monatelang studieren könntest. Hier konzentrieren wir uns nur auf einige wenige Aspekte, und zwar nur aus der Sicht eines Programmierers, der die Möglichkeiten der JVM nutzt, und nicht darauf, wie sie intern funktioniert; das ist ein Implementierungsdetail, das sich von JVM zu JVM unterscheiden kann.
Ich beginne mit dem dynamischen Laden einer bestehenden Klasse, fahre mit der Auflistung der Felder ...
Get Java Kochbuch, 4. Auflage now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.