Joker (Java)

Joker (Java)

Der Joker (oder Wildcard) ? ist in Java ein spezieller aktueller Typparameter für die Instanziierung generischer (parametrisierter) Typen. In diesem Artikel werden die wichtigsten Regeln für seine Verwendung zusammengefasst.

Inhaltsverzeichnis

Kovarianz für generische Typen

Im Gegensatz zu Arrays (die in Java kovariant sind) sind unterschiedliche Instanziierungen eines generischen Typs untereinander nicht (auch nicht explizit) kompatibel: Nach den Vereinbarungen Generisch<Obertyp> oberGenerisch; Generisch<Untertyp> unterGenerisch; meldet der Compiler bei beiden Konvertierungen (castings) (Generisch<Untertyp>)oberGenerisch und (Generisch<Obertyp>)unterGenerisch einen Fehler.

Diese Inkompatibilität kann mit dem Joker aufgeweicht werden, wenn ? für einen aktuellen Typparameter eingesetzt wird: Generisch<?> ist der abstrakter Obertyp aller Instanziierungen des generischen Typs. Das heißt, von diesem Typ können nur Referenzen, keine Objekte gebildet werden. Der Sinn einer solcher Referenz ist, dass zu ihr beliebige Instanziierungen von Generisch passen.

Joker als Parametertyp

Im Rumpf der generischen Einheit wird der Typparameter wie die obere Schranke (wenn uneingeschränkt, dann wie Object) gehandhabt. Wenn der Ergebnistyp (return type) einer Funktion der Typparameter ist, kann das Ergebnis (z.B. vom Typ ?) in eine Referenz vom Typ der Schranke (Object, wenn keine Schranke) übernommen werden. In die andere Richtung, zum Joker-Typ passt kein anderer Typ, nicht einmal Object: Wenn ? für den Typ des formalen Parameters einer Methode eingesetzt wurde, können ihr keine aktuellen Parameter übergeben werden. Sie kann dann nur nach Konvertierung (casting) der Joker-Referenz aufgerufen werden:

class Generisch<T extends Schranke> {
 private T t;
 void schreiben(T t) { this.t = t; }
 T lesen() { return t; } }
...
Generisch<?> jokerReferenz;
Schranke o = jokerReferenz.lesen(); // Object wäre auch OK
jokerReferenz.schreiben(new Object()); // Typfehler
((Generisch<Schranke>)jokerReferenz).schreiben(new Schranke()); // OK

Einschränkung des Jokers

Nicht nur der formale Typparameter, auch der Joker kann (weiter) von oben eingeschränkt werden, wenn man nicht beliebige Instanziierungen kompatibel halten möchte:

Generisch<? extends UntertypVonSchranke> vonObenEingeschränkteReferenz;

In diese Referenz kann nun eine Instanz von Generisch eingehängt werden, wo der aktuelle Typparameter ein Untertyp von UntertypVonSchranke ist. In eine Einschränkung von unten

Generisch<? super UntertypVonSchranke> vonUntenEingeschränkteReferenz;

können Instanziierungen von Generisch mit einem beliebigen Obertyp (z.B. Schranke) von UntertypVonSchranke eingehängt werden. Es ist also möglich, dass die zugelassenen Typen von zwei Seiten eingeschränkt werden: von oben durch die Klassenvereinbarung (extends Schranke), von unten durch die Referenzvereinbarung (super UntertypVonSchranke).

Objekterzeugung mit Joker-Instanziierungen

Obwohl von Joker-Instanziierungen keine Objekte erzeugt werden können (new Generisch<?>() ist also verboten, weil Generisch<?> abstrakt ist), können Array-Objekte nur von uneingeschränkten Joker-Instanziierungen (also von keinen anderen generischen Instanziierungen) erzeugt werden: new Generisch<?>[20] ist korrekt, während new Generisch<Schranke>[20] ist verboten.

Referenzen


Wikimedia Foundation.

Игры ⚽ Нужна курсовая?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Joker (Begriffsklärung) — Joker steht für folgende Begriffe: Joker, eine Spielkarte bei Kartenspielen. Joker (Comicfigur), eine Figur aus den Batman Comics. JoKeR, das Pseudonym des Kölner Comiczeichners und Autor Jens O. Konnerth. Joker (Bootsklasse), eine sportliche… …   Deutsch Wikipedia

  • Pierre Guilmard — ou Pierre Laforêt, né à Toulouse en 1945, est auteur de bande dessinée depuis 1963. Sommaire 1 Biographie 2 Bibiographie 3 Collectifs 4 Publications dans divers magazin …   Wikipédia en Français

  • Computermagazin — Eine Computerzeitschrift bzw. Rechnerzeitschrift ist eine Zeitschrift, die sich in der Regel mit Themen zu Hard und Software von Computern beschäftigt. Sie enthält aber auch Artikel über verwandte technische Themen wie z. B. Digitalfotografie,… …   Deutsch Wikipedia

  • Computerspielezeitschrift — Eine Computerzeitschrift bzw. Rechnerzeitschrift ist eine Zeitschrift, die sich in der Regel mit Themen zu Hard und Software von Computern beschäftigt. Sie enthält aber auch Artikel über verwandte technische Themen wie z. B. Digitalfotografie,… …   Deutsch Wikipedia

  • Computerzeitung — Eine Computerzeitschrift bzw. Rechnerzeitschrift ist eine Zeitschrift, die sich in der Regel mit Themen zu Hard und Software von Computern beschäftigt. Sie enthält aber auch Artikel über verwandte technische Themen wie z. B. Digitalfotografie,… …   Deutsch Wikipedia

  • List of DC animated universe characters — A Justice League Unlimited promotional image. The DC animated universe was a series of shows and feature length films that aired or were released during the period from 1992 through 2006 and featured many characters from the DC Comics roster.… …   Wikipedia

  • Expreg — Expression rationnelle Pour les articles homonymes, voir régulier et rationnel. Une expression rationnelle ou expression régulière[1] est en informatique une chaîne de caractères que l’on appelle parfois un motif et qui décrit un ensemble de… …   Wikipédia en Français

  • Expression Rationnelle — Pour les articles homonymes, voir régulier et rationnel. Une expression rationnelle ou expression régulière[1] est en informatique une chaîne de caractères que l’on appelle parfois un motif et qui décrit un ensemble de chaînes de caractères… …   Wikipédia en Français

  • Expression régulière — Expression rationnelle Pour les articles homonymes, voir régulier et rationnel. Une expression rationnelle ou expression régulière[1] est en informatique une chaîne de caractères que l’on appelle parfois un motif et qui décrit un ensemble de… …   Wikipédia en Français

  • Expressions Régulières — Expression rationnelle Pour les articles homonymes, voir régulier et rationnel. Une expression rationnelle ou expression régulière[1] est en informatique une chaîne de caractères que l’on appelle parfois un motif et qui décrit un ensemble de… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”