Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.java > #13096
| Newsgroups | de.comp.lang.java |
|---|---|
| Date | 2017-01-31 09:38 -0800 |
| References | <da729f39-9df8-4d89-9689-c2c19949a437@googlegroups.com> <c689a210-367e-4c9c-97f8-6ec9e316ff9c@googlegroups.com> <o6pnoh$udl$1@newsreader4.netcologne.de> <o6pplt$4tf$1@news-aesculus.fernuni-hagen.de> |
| Message-ID | <a8ce6a6b-92fb-4cdb-888c-3e8311f703f6@googlegroups.com> (permalink) |
| Subject | Re: Algorithmus zum Finden des speziellsten Super-Typ eines multi-catch |
| From | Heiner Kücker <mail@heinerkuecker.de> |
Am Dienstag, 31. Januar 2017 11:44:02 UTC+1 schrieb Michael Paap:
> "Punktuell covariant" ist nett ausgedückt. Aber naja, das sind sie ja in
> einem gewissen Sinne auch. Mit dem Preis, dass man in Fällen wie diesen
> die Wildcards am Hals hat.
Ich schreibe hier mal was zur Erklärung kovariant/kontravariant:
Kovariant wird geschrieben als
? extends X
Kontravariant wird geschrieben als
? super X
Ziemlich unverständlich, was soll das bedeuten?
Nehmen wir mal eine Hierarchie von drei Klassen an:
class A {}
class B extends A {}
class C extends B {}
Wenn wir kovariant schreiben:
? extends A
dann darf dort A, B oder C stehen.
Dies verwenden wir in einer Zuweisung:
A = ? extends A
entspricht
A = A oder
A = B oder
A = C
Alles erlaubt, zuweisungs-kompatibel.
Jetzt mal andersherum:
? extends A = A
entspricht
A = A oder
B = A oder
C = A
Die zweite und dritte Zeile ist nicht erlaubt, nicht zuweisungs-kompatibel.
Das bedeutet,
? extends X
darf in einer Zuweisung nur rechts stehen, nur gelesen werden.
Jetzt das Ganze kontravariant:
Wenn wir kontravariant schreiben:
? super C
dann darf dort A, B oder C stehen.
Dies verwenden wir in einer Zuweisung:
? super C = C
entspricht
C = C oder
B = C oder
A = C
Alles erlaubt, zuweisungs-kompatibel.
Jetzt mal andersherum:
C = ? super C
entspricht
C = C oder
C = B oder
C = A
Die zweite und dritte Zeile ist nicht erlaubt, nicht zuweisungs-kompatibel.
Das bedeutet,
? super X
darf in einer Zuweisung nur links stehen, nur geschrieben werden.
Also ist
? extends X
eine mathematisch verklausulierte Schreibweise für nur-Lesen sowie
? super X
eine mathematisch verklausulierte Schreibweise für nur-Schreiben.
Im konkreten Beispiel des multi-catch mit "Punktuell kovariant" darf ein T-Wert eben nur gelesen werden.
Gruesse
Heiner
Back to de.comp.lang.java | Previous | Next — Previous in thread | Next in thread | Find similar
Algorithmus zum Finden des speziellsten Super-Typ eines multi-catch Heiner Kücker <mail@heinerkuecker.de> - 2017-01-30 16:51 -0800
Re: Algorithmus zum Finden des speziellsten Super-Typ eines multi-catch Heiner Kücker <mail@heinerkuecker.de> - 2017-01-31 00:48 -0800
Re: Algorithmus zum Finden des speziellsten Super-Typ eines multi-catch Patrick Roemer <sangamon@netcologne.de> - 2017-01-31 11:09 +0100
Re: Algorithmus zum Finden des speziellsten Super-Typ eines multi-catch Michael Paap <feunews@mpaap.de> - 2017-01-31 11:42 +0100
Re: Algorithmus zum Finden des speziellsten Super-Typ eines multi-catch Heiner Kücker <mail@heinerkuecker.de> - 2017-01-31 09:38 -0800
Re: Algorithmus zum Finden des speziellsten Super-Typ eines multi-catch Michael Paap <feunews@mpaap.de> - 2017-01-31 19:58 +0100
Re: Algorithmus zum Finden des speziellsten Super-Typ eines multi-catch Heiner Kücker <mail@heinerkuecker.de> - 2017-01-31 11:24 -0800
Re: Algorithmus zum Finden des speziellsten Super-Typ eines multi-catch Michael Paap <feunews@mpaap.de> - 2017-01-31 20:33 +0100
Re: Algorithmus zum Finden des speziellsten Super-Typ eines multi-catch Heiner Kücker <mail@heinerkuecker.de> - 2017-01-31 08:26 -0800
Re: Algorithmus zum Finden des speziellsten Super-Typ eines multi-catch Heiner Kücker <mail@heinerkuecker.de> - 2017-01-31 08:29 -0800
Re: Algorithmus zum Finden des speziellsten Super-Typ eines multi-catch Michael Paap <feunews@mpaap.de> - 2017-01-31 20:26 +0100
Re: Algorithmus zum Finden des speziellsten Super-Typ eines multi-catch Heiner Kücker <mail@heinerkuecker.de> - 2017-01-31 14:33 -0800
csiph-web