# Reflections --- # Grundlagen Ermöglichen das Abfragen von Metainformationen zur Laufzeit. Dazu gehört der dynamische Typ eines Objekts, dessen Felder (private und öffentliche) und Methoden. Benutzt werden Reflections vor allem beim Datenaustausch in verteilten Systemen. --- # Java Reflection API Die wichtigsten Klassen aus den Java Reflections sind: * ``Class`` * ``Field`` * ``Constructor`` * ``Method`` * etc. (siehe [Reflection API]()) --- # Anwendung ```java Dreieck dreieck = new Dreieck(); Class dreieckKklasse = dreieck.getClass(); System.out.println(dreieckKlasse.getSimpleName()); // Konsole: Dreieck ``` --- # Benutzung Reflections sollten nur genutzt werden wenn es gar nicht anders geht. Man kann sonst schnell die schönen Objektstrukturen zerstören die ein Software-Architekt entwickelt hat. --- # Aufgaben 1) Schreibe eine statische Methode ``schreibKonstruktoren(Object object)`` welche die Parameter aller Konstruktoren von ``object`` auf die Konsole schreibt (``System.out.println(...)``). 2) Schreibe eine statische Methode `schreibPrivateFelder(Object object)` welche die Namen und Typen aller **privaten** und **statischen** Felder von `object` auf die Konsole schreibt.