Wie wird in Java-Generika die Kontravarianz verwendet?

In Java kann der API-Designer durch Kovarianz festlegen, dass eine Instanz als bestimmter Typ oder als einer der Untertypen dieses Typs verallgemeinert werden kann. Beispielsweise

List<? extends Shape> shapes = new ArrayList<Circle>(); 
// where type Circle extends Shape

Contravariance geht in die andere Richtung. Hiermit können wir festlegen, dass eine Instanz als bestimmter Typ oder Supertyp verallgemeinert werden kann.

List<? super Shape> shapes = new ArrayList<Geometry>();
// where Shape extends Geometry

Wie ist die Kontravarianz von Java-Generika nützlich? Wann möchten Sie es verwenden?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage