Programmieren_2/reflections.md

61 lines
1.4 KiB
Markdown

<!--
title: Reflections
description: Folien für Reflections in Programmieren 2
url: https://git.henriburau.de/tutorien/programmieren-2
header: Programmieren 2 **Tutorium**
footer: Henri Burau
-->
# 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](<!-- TODO -->))
---
# 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.