Ich habe einige Beispielprogramme auf Generics Upper/Lower Grenzen versucht .. Generics Upper Bound gibt Kompilierungsfehler ... Aber Lower Bound ist in Ordnung. Ich versuche gerade, eine Liste des Typs T in eine Menge und versuchen oberen und unteren Grenze Szenarien.Generics Upper Bound Wildcard gibt Kompilierungsfehler
Bitte helfen, das Problem mit testUpperBound (T t) -Methode zu identifizieren und warum genau das testLowerBound (T t) Methode kompilieren und die testUpperBound (T t) man nicht. Ich habe andere ähnliche Themen überprüft. Aber ich habe es immer noch nicht verstanden.
Bitte lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.
public class TestGenerics<T>
{
public static void main(String...args)
{
List<String> list = new ArrayList<>();
list.add("New ArrayList");
new TestGenerics<List<String>>().testUpperBound(list);
new TestGenerics<List<String>>().testLowerBound(list);
}
public void testLowerBound(T t)
{
Set<? super ArrayList<T>> lowerBoundSet = new HashSet<>();
lowerBoundSet = new HashSet<List<T>>();
ArrayList<T> list = new ArrayList<>();
list.add(t);
lowerBoundSet.add(list); // compiles..
out.println(lowerBoundSet);
}
public void testUpperBound(T t)
{
Set<? extends List<T>> upperBoundSet = new HashSet<>();
upperBoundSet = new HashSet<List<T>>();
ArrayList<T> list = new ArrayList<>();
list.add(t);
upperBoundSet.add(list); // Doesn't compile..
out.println(upperBoundSet);
}
}
Super :) Endlich habe ich es klar .... Danke David ..! . Geschätzt und akzeptiert die Antwort. –