05 - Reflection Das Reflection API. 05 - Reflection2 Ziel Es kommt vor, dass eine Methode ein Objekt als Parameter übergeben bekommt, ohne dass bekannt.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
der Universität Oldenburg
Metamodell, Reflection in objektorientierten Sprachen
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
Einführung in die Programmierung Ausführbare Klassen
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Progwerkstatt JAVA Klasse, Objekte, Konstruktoren, Methoden
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
Ein Beispiel in Java.
Erweiterte Zuweisungskompatibilität
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
Objekte werden als Adressen (Referenzen) übergeben. Dies führt manchmal zu unerwarteten Ergebnissen...
Assoziationen (Beziehungen) 1 : n. Zu einem Auto gibt es mehrere Fahrer (2) und zu diesen 2 Fahrern gibt es genau dieses Auto.
Polymorphie (Vielgestaltigkeit)
Assoziationen (Beziehungen). Zwischen Objekten kann es eine Beziehung geben.
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
Interface bzw. Schnittstelle anschaulich: Hüllenklasse
Reflection API ETIS SS04.
Reflection API ETIS SS05.
Programmieren mit JAVA
Programmieren mit JAVA
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
Zusammenfassung Vorwoche
Packages Vortrag : Cornelia Hardt 23. November 1999.
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
DVG Einführung in Java1 Einführung in JAVA.
DVG Methoden 1 Methoden. 2 int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0); dezi = Math.abs(dezi); String Bin = ""; do { } while.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
04 - Actions Actions Actions 2 Motivation In verschiedenen Swing-Komponenten werden ausgelöste Aktionen durch ActionListener behandelt. Häufig werden.
Klassen 02 - Klassen.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
JDBC EDV JDBC.
06-EMMA-GUI Das EMMA-GUI. 06-EMMA-GUI 2 Aufteilung des Bildes (Applikation) Menü - Balken Dateiwerkzeuge Zeichenwerkzeuge Meldungen, Informationen, Fehler.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Eine Entwicklungsumgebung im Web IFC-Seminar WS98/ Holger Otte.
IT2 – WS 2005/20061Oct 10, 2005 Externes Verhalten – Quelltext (source code) Durch Aufrufe der Konstruktoren und Methoden kann das externe Verhalten (=die.
1. Verhalten der Objekte: Operationen Werden in den Klassen definiert Werden (i.d.R.) auf einem Objekt aufgerufen Wird das Empfängerobjekt genannt Weitere.
Objektorientiertes Konstruieren
Die Klasse String und ihre Methoden
Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten.
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014/15 Instanzmethoden
Voyager Eigenschaften/Vorzüge Universalität: –ROI-Modelle: CORBA, RMI, DCOM –verschiedene Namens-, Verzeichnisdienste Nachrichtentypen: synchron, oneway,
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
3. Beschreibung von Abläufen durch Algorithmen 3.4 Zufall
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
OQL-Anbindung an Java (1) Java als Beispiel für die Einbettung von OQL in eine Programmiersprache Die OQL-Einbettung in Java ist teilweise mit dynamischem.
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Reflection API1 Motivation Reflection API Core Reflection API: java.lang.reflect Seit JDK 1.1 integraler Bestandteil der Java- Klassenbibliothek Ermöglicht:
Tutorium Software-Engineering SS14 Florian Manghofer.
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
Dynamisches Laden von Klassen
Grundkurs Informatik 11-13
Von Cem, Maurice und lars
Implementieren von Klassen
 Präsentation transkript:

05 - Reflection Das Reflection API

05 - Reflection2 Ziel Es kommt vor, dass eine Methode ein Objekt als Parameter übergeben bekommt, ohne dass bekannt ist, von welcher Klasse diese Objekt erzeugt wurde. Die weiter Verwendung des Objektes hängt aber davon ab, zu welcher Klasse das Objekt gehört. Beispiel: Das Graphikprogramm ist von JComponent abgeleitet, damit es flexibel als Applikation, Applet oder interne Applikation genutzt werden kann. Das Graphikprogramm soll ein JMenuBar an die Elternklasse andocken. Es muss also sicher sein, dass das Elternobjekt die Methode setJMenuBar(JMenuBar) kennt. Es ist also günstig zu testen ob diese Methode bekannt ist. Das kann nicht zur Übersetzungszeit passieren, da dort der wahre Typ des Parameters noch nicht bekannt ist. Zur Lösung derartiger Probleme existiert das Reflection API.

05 - Reflection3 Das Reflection API besteht aus folgenden Klassen: java.lang.Class beschreibt Klassen java.lang.reflect.Constructor beschreibt einen Konstruktor java.lang.reflect.Field beschreibt ein Attribut java.lang.reflect.Method beschreibt eine Methode java.lang.reflect.Array beschreibt ein Feld von Objekten java.lang.reflect.Modifier beschreibt die Modifiziere eines Objectes

05 - Reflection4 Die Klasse Class Die Klasse Class beschreibt Klassen. D.h. für jede Klasse gibt es genau ein Objekt der Klasse Class, die diese reflektiert. Aus diesem Objekt kann man die vollständige Schnittstellenbeschreibung der Klasse in Erfahrung bringen, sowie auf Konstruktoren, Methoden und Attribute zugreifen. Es gibt keine Konstruktoren. Objekte der Klasse Class werden mit der Methode public Class getClass() der Klasse Object oder mit der Methode public static Class forName(String className) erzeugt.

05 - Reflection5 Methoden der Klasse Class public Constructor[] getConstructors() liefert ein Feld von Constructor -Objekten für alle in der Klasse definierten Konstruktoren public Class[] getClasses() liefert ein Feld von Class -Objekten für die in der Klasse definierten internen Klassen und Interface public Field[] getFields() liefert ein Feld von Field -Objekten für alle in der Klasse definierten Attribute public Method[] getMethods() liefert ein Feld von Method -Objekten für alle in der Klasse definierten Methoden

05 - Reflection6 public Constructor getConstructor(Class[] parameterTypes ) liefert das Constructor -Objekt bei die vorgegebene Parameterliste passt. public Field getField(String name) liefert ein Field -Objekte mit dem angegebenen Namen public Method getMethod(String name, Class[] parameterTypes ) liefert ein Method -Objekt für die Methode mit dem angegebenen Namen und passender Parameterliste Falls die Objekte nicht existieren werden die entsprechenden Ausnahmen NoSuchMethodException bzw. NoSuchFieldException ausgelöst. Die Methode public String getName() liefert den vollständigen Namen der Klasse.

05 - Reflection7 Beispiel Collection col = new TreeSet(); Class colClass = col.getClass(); System.out.println(colClass.getName()); Liefert die Ausgabe java.util.TreeSet

05 - Reflection8 Die Klasse Method Objekte der Klasse Method beschreiben Methoden von Klassen. Es gibt keinen Konstruktor. Objekte der Klasse Method werden mit den Methoden getMethods bzw. getMethod der Klasse Class erzeugt.

05 - Reflection9 Methoden der Klasse Method public String getName() liefert den Namen der Methode public Object invoke(Object obj, Object[] args) ruft die Methode des Objektes obj mit den entsprechenden Parametern args auf

05 - Reflection10 Beispiel JMenuBar mb = new JMenuBar(); try { Class frc = fr.getClass(); Method met = frc.getMethod("setJMenuBar", new Class[]{JMenuBar.class}); met.invoke(fr, new Object[]{mb}); } catch (NoSuchMethodException nsme){} catch (NullPointerException npe){} catch (IllegalAccessException iae){} catch (InvocationTargetException ite){}