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 Klassen java.lang.Class und des Reflection-Pakets java.lang.reflect bieten eine Reihe von Mechanismen, um Informationen von der Java Virtual Machine zu erhalten. Mit diesen Funktionen, die unter dem Namen Reflection bekannt sind, kannst du Klassen spontan laden, Methoden und Felder in Klassen finden, Listen von ihnen erstellen und Methoden in dynamisch geladenen Klassen aufrufen. 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 kommst du 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 von OpenJDK und anderen JVMs über das Internet beziehen und dich monatelang damit beschäftigen. Wir konzentrieren uns hier nur auf einige wenige Aspekte, und zwar 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 der JVM eines Anbieters zu einem anderen unterscheiden kann.
Ich beginne mit dem dynamischen Laden einer bestehenden Klasse, fahre mit der Auflistung ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access