1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
<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,k100277.html;107,k100279.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="k100277.html"> < </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100279.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="sectlevel2id043007"></a>
<h2>43.7 Zusammenfassung </h2>
<hr>
<ul>
<li><a href="k100278.html#sectlevel2id043007">43.7 Zusammenfassung</a>
</ul>
<hr>
<p>
Das Reflection-API ist ohne Zweifel ein wichtiger Bestandteil von
Java. Es ist nicht nur Grundlage der Beans- und Serialisierungs-APIs,
sondern eröffnet dem Tool-Entwickler auch eine Fülle von
Möglichkeiten und Freiheiten bei der Entwicklung allgemein verwendbarer
Werkzeuge. Zu beachten ist allerdings, dass Zugriffe auf Methoden
und Membervariablen deutlich langsamer als bei direktem Zugriff ausgeführt
werden. Im experimentellen Vergleich ergaben sich typischerweise Unterschiede
um den Faktor 10 bis 100. Während auf der verwendeten Testmaschine
der Aufruf einer Methode mit einem <a href="index_d.html#ixb100247"><font color=#000080><tt>double</tt></font></a>-Parameter
beispielsweise 120 ns. dauerte, wurden für denselben Aufruf per
Reflection etwa 7.0 µs. benötigt. Bei deaktiviertem Just-In-Time-Compiler
erhöhte sich die Zeit für den direkten Aufruf auf 620 ns.,
während der Reflection-Wert mit etwa 7.2 µs. nahezu unverändert
blieb. Beim Zugriff auf Membervariablen wurden ähnliche Unterschiede
gemessen. Bemerkenswert ist, dass der JIT bei Verwendung des Reflection-APIs
praktisch keine Geschwindigkeitsvorteile bringt, denn alle nennenswerten
Methoden sind native und können daher kaum optimiert werden.
<p>
Mit den Annotationen haben Sie schließlich ein leistungsfähiges
Mittel kennen gelernt, wie Sie zusätzliche Informationen direkt
in den Quellcode integrieren und auch zur Laufzeit wieder auslesen
können.
<p>
In diesem Kapitel wurden folgende Themen behandelt:
<ul>
<li>Die Klassen <a href="index_o.html#ixb100224"><font color=#000080><tt>Object</tt></font></a>
und <a href="index_c.html#ixb100641"><font color=#000080><tt>Class</tt></font></a>.
<li>Dynamisches Laden und Instanzieren von Klassen.
<li>Aufruf parameterloser Methoden.
<li>Ein Hilfsprogramm zum Testen von Java-Klassen.
<li>Aufruf parametrisierter Methoden und das automatische Aus- und
Einpacken von primitiven Typen in Wrapperklassen.
<li>Nachbilden von Funktionszeigern mit Reflection.
<li>Verwenden parametrisierter Konstruktoren.
<li>Zugriff auf Membervariablen.
<li>Erzeugen von Arrays und Zugriff auf Array-Elemente.
<li>Die Verwendung von Annotationen im Quellcode
</ul>
<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="k100277.html"> < </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100279.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>
|