diff options
| author | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
|---|---|---|
| committer | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
| commit | 33613a85afc4b1481367fbe92a17ee59c240250b (patch) | |
| tree | 670b842326116b376b505ec2263878912fca97e2 /Master/Reference Architectures and Patterns/hjp5/html/k100272.html | |
| download | Studium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.gz Studium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.bz2 | |
Diffstat (limited to 'Master/Reference Architectures and Patterns/hjp5/html/k100272.html')
| -rw-r--r-- | Master/Reference Architectures and Patterns/hjp5/html/k100272.html | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/Master/Reference Architectures and Patterns/hjp5/html/k100272.html b/Master/Reference Architectures and Patterns/hjp5/html/k100272.html new file mode 100644 index 0000000..ca0f0d9 --- /dev/null +++ b/Master/Reference Architectures and Patterns/hjp5/html/k100272.html @@ -0,0 +1,101 @@ +<html>
+<head>
+<title>
+Handbuch der Java-Programmierung, 5. Auflage
+</title>
+</head>
+<body>
+<a name="startofbody"></a>
+<script language="JavaScript" src="hjp4lib.js">
+</script>
+<script language="JavaScript">
+installKbdHandler("97,#startofbody;101,#endofbody;116,cover.html;122,k100003.html;115,search.html;105,index.html;100,JDKDOCS;112,APIDOCS;104,k100271.html;106,k100271.html;107,k100273.html;108,k100279.html");
+</script>
+<table border=0 cellpadding=0 cellspacing=1 width="100%">
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html"> Titel </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html"> Inhalt </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html"> Suchen </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html"> Index </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()"> DOC </a>
+<td align="right">Handbuch der Java-Programmierung, 5. Auflage
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100271.html"> << </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100271.html"> < </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100273.html"> > </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100279.html"> >> </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()"> API </a>
+<td align="right">Kapitel 43 - Reflection
+</table>
+<hr>
+
+
+<!-- Section -->
+<a name="sectlevel2id043001"></a>
+<h2>43.1 Einleitung </h2>
+<hr>
+<ul>
+<li><a href="k100272.html#sectlevel2id043001">43.1 Einleitung</a>
+</ul>
+<hr>
+
+<p>
+Bei der Entwicklung des JDK 1.1 sahen sich die Entwickler mit einer
+Schwäche von Java konfrontiert, die die Entwicklung bestimmter
+Typen von Tools und Bibliotheken unmöglich machte: der statischen
+Struktur von Klassen und Objekten. Um ein Objekt anzulegen, eine seiner
+Methoden aufzurufen oder auf eine seiner Membervariablen zuzugreifen,
+mußte der Code der Klasse zur <i>Compilezeit</i> bekannt sein.
+Während dies für die meisten gewöhnlichen Anwendungen
+kein Problem darstellt, ist es für die Entwicklung generischer
+Werkzeuge und hochkonfigurierbarer Anwendungen, die durch PlugIns
+erweiterbar sind, unzureichend. Insbesondere die Entwicklung der Beans-
+und Serialisierungs-APIs war mit den in der Version 1.0 verfügbaren
+Spracheigenschaften nicht möglich.
+
+<p>
+Benötigt wurde vielmehr die Möglichkeit, Klassen zu laden
+und zu instanzieren (auch mit parametrisierten Konstruktoren), ohne
+dass bereits zur Compilezeit ihr Name bekannt sein mußte. Weiterhin
+sollten statische oder instanzbasierte Methoden aufgerufen und auf
+Membervariablen auch dann zugegriffen werden können, wenn ihr
+Name erst zur Laufzeit des Programms bekannt ist.
+
+<p>
+Gesucht wurde also ein Mechanismus, der diese normalerweise vom Compiler
+angeforderten Fähigkeiten des Laufzeitsystems auch »normalen«
+Anwendungen zur Verfügung stellte. Mit dem Reflection-API des
+JDK 1.1 wurde eine Library-Schnittstelle geschaffen, die alle erwähnten
+Fähigkeiten (und noch einige mehr) implementiert und beliebigen
+Anwendungen als integralen Bestandteil der Java-Klassenbibliothek
+zur Verfügung stellt. Erweiterungen am Sprachkern waren dazu
+nicht nötig.
+
+<p>
+Wir wollen uns in diesem Kapitel die wichtigsten Eigenschaften des
+Reflection-APIs ansehen und ein paar nützliche Anwendungen vorstellen.
+Die als <a name="ixa103161"><i>Introspection</i></a> bezeichneten
+Erweiterungen für die Beans-Behandlung werden in <a href="k100279.html#kapitelbeans">Kapitel 44</a>
+behandelt.
+<hr>
+<table border=0 cellpadding=0 cellspacing=1 width="100%">
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html"> Titel </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html"> Inhalt </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html"> Suchen </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html"> Index </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()"> DOC </a>
+<td align="right">Handbuch der Java-Programmierung, 5. Auflage, Addison
+Wesley, Version 5.0.1
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100271.html"> << </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100271.html"> < </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100273.html"> > </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100279.html"> >> </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()"> API </a>
+<td align="right">© 1998, 2007 Guido Krüger & Thomas
+Stark, <a href="http://www.javabuch.de">http://www.javabuch.de</a>
+</table>
+<a name="endofbody"></a>
+</body>
+</html>
|
