16.11.2013 Aufrufe

Programmieren in Java - HostFiXX.de

Programmieren in Java - HostFiXX.de

Programmieren in Java - HostFiXX.de

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Programmieren</strong> <strong>in</strong> <strong>Java</strong><br />

public class AnwAlteSchachtelFehler<br />

{<br />

public static void ma<strong>in</strong>(Str<strong>in</strong>g args[])<br />

{<br />

AlteSchachtel b = new AlteSchachtel(new Integer(42));<br />

Str<strong>in</strong>g s = (Str<strong>in</strong>g) b.<strong>in</strong>halt;<br />

System.out.pr<strong>in</strong>tln(s.toUpperCase());<br />

}<br />

}<br />

Das vorliegen<strong>de</strong> Bsp. zeigt: Sobald <strong>de</strong>r Typ Object benutzt wird gibt es e<strong>in</strong>en<br />

Verlust an Typsicherheit, sobald <strong>de</strong>r Typ Object benutzt wird.<br />

Wie kann man Klassen schreiben, die statische Typsicherheit garantieren? Im<br />

vorliegen<strong>de</strong>n Beispiel braucht man nur je<strong>de</strong>s Auftreten <strong>de</strong>s Typs Object durch e<strong>in</strong>en<br />

Variablennamen zu ersetzen. Die Variable ist e<strong>in</strong>e Typvariable, sie steht für e<strong>in</strong>en<br />

beliebigen Typ. Dem Klassennamen wird zusätzlich <strong>in</strong> <strong>de</strong>r Klassen<strong>de</strong>f<strong>in</strong>ition, <strong>in</strong><br />

spitzen Klammern e<strong>in</strong>geschlossen, h<strong>in</strong>zugefügt, dass diese Klasse e<strong>in</strong>e Typvariable<br />

benutzt.<br />

class Schachtel <br />

{<br />

elementType <strong>in</strong>halt;<br />

Schachtel(elementType <strong>in</strong>halt)<br />

{<br />

this.<strong>in</strong>halt = <strong>in</strong>halt;<br />

}<br />

}<br />

Die Typvariable elementType ist allqualifiziert. Für je<strong>de</strong>n Typ elementType kann die<br />

Klasse Schachtel verwen<strong>de</strong>t wer<strong>de</strong>n, z.B.:<br />

Schachtel zur Speicherung von Str<strong>in</strong>gs<br />

Schachtel zur Speicherung von Integer-Objekte<br />

Bsp. 175 :<br />

public class AnwSchachtel<br />

{<br />

public static void ma<strong>in</strong>(Str<strong>in</strong>g args[])<br />

{<br />

Schachtel b1 = new Schachtel("Hallo");<br />

Str<strong>in</strong>g s = b1.<strong>in</strong>halt;<br />

System.out.pr<strong>in</strong>tln(s.toUpperCase());<br />

System.out.pr<strong>in</strong>tln(b1.<strong>in</strong>halt.toUpperCase());<br />

Schachtel b2 = new Schachtel(new Integer(42));<br />

System.out.pr<strong>in</strong>tln(b2.<strong>in</strong>halt.<strong>in</strong>tValue());<br />

}<br />

}<br />

175 pr25210<br />

190

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!