Also ich habe eine Theoriefrage zu Generics, genauer bzgl. einer Aussage im "Inselbuch": http://www.galileocomputing.de/openbook/javainsel6/javainsel_06_013.htm
In Abschnitt "6.13.4 Einschränken der Typen" steht:
Versuche ich das umzusetzen, bekomme ich aber immer die Fehlermeldung, dass der Token 'super' da nicht hingehört. Einzig bei den angesprochenen Wildcards kann ich problemlos eine 'super'-Angabe machen.
Also wie ist es nun konkret? Das 'super' nur bei WildCards oder auch irgendwie irgendwo anders?
In Abschnitt "6.13.4 Einschränken der Typen" steht:
Neben extends kann der Typ auch mit super eingeschränkt werden. Dann sind nicht mehr alle Untertypen erlaubt, sondern der genannte Typ bestimmt den maximalen Obertyp. Während also <T extends CharSequence> eine Typisierung mit Klassen ermöglicht, die Char-Sequence implementieren, also mindestens vom Typ CharSequence sind, würde <T super String> die Typen einschließen, die in der Vererbungshierarchie unter String liegen. Die Einschränkung ist wenig nötig und ist im Allgemeinen für Wildcards sinnvoll, die wir gleich kennen lernen werden.
Versuche ich das umzusetzen, bekomme ich aber immer die Fehlermeldung, dass der Token 'super' da nicht hingehört. Einzig bei den angesprochenen Wildcards kann ich problemlos eine 'super'-Angabe machen.
Code:
// Fehler
class Bla <T super String>
{}
// Wildcard OK
Vector<? super String> blubb;
Also wie ist es nun konkret? Das 'super' nur bei WildCards oder auch irgendwie irgendwo anders?