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 />

Da mit generischen Typen ke<strong>in</strong>e Typzusicherungen mehr vorzunehmen s<strong>in</strong>d, gibt es<br />

hier auch ke<strong>in</strong>e dynamischen Typfehler mehr. Laufzeitfehler, wie sie ohne die<br />

"generische Schachtel" aufgetreten s<strong>in</strong>d, wer<strong>de</strong>n jetzt bereits zur Übersetzungszeit<br />

ent<strong>de</strong>ckt.<br />

Bsp. 176 :<br />

public class AnwSchachtelFehler<br />

{<br />

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

{<br />

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

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

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

}<br />

}<br />

AnwSchachtelFehler.java: 5 cannot f<strong>in</strong>d symbol<br />

Kovarianz gegen Kontravarianz: Das folgen<strong>de</strong> Programm führt auf e<strong>in</strong>en Fehler<br />

class Kontra<br />

{<br />

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

{<br />

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

}<br />

}<br />

E<strong>in</strong>e Schachtel ist ke<strong>in</strong>e Schachtel. Der Grund dafür ist,<br />

dass bestimmte Laufzeitfehler vermie<strong>de</strong>n wer<strong>de</strong>n sollen. Betrachtet man e<strong>in</strong> Objekt<br />

<strong>de</strong>s Typs Schachtel über e<strong>in</strong>e Referenz <strong>de</strong>s Typs<br />

Schachtel, dann können <strong>in</strong> <strong>de</strong>m Feld <strong>in</strong>halt beliebige Objekte<br />

gespeichert wer<strong>de</strong>n. Die Referenz über <strong>de</strong>n Typ Box geht davon aus,<br />

dass <strong>in</strong> <strong>in</strong>halt nur Str<strong>in</strong>gobjekte gespeichert wer<strong>de</strong>n.<br />

Reihungen (arrays) verhalten sich <strong>in</strong> <strong>Java</strong> an<strong>de</strong>rs. Bei Reihungen ist die<br />

entsprechen<strong>de</strong> Zuweisung erlaubt. E<strong>in</strong>e Reihung von Str<strong>in</strong>gobjekten darf e<strong>in</strong>er<br />

Reihung beliebiger Objekte zugewiesen wer<strong>de</strong>n. Dann kann es bei <strong>de</strong>r Benutzung<br />

e<strong>in</strong>er Reihung von Objekten zu e<strong>in</strong>em Laufzeitfehler kommen.<br />

176 pr25210<br />

191

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!