ich die folgenden Einrichtungen in meinem Domain-Modell hat:Java generische obere begrenzt Wildcard Fehler
class Point {
public String details;
public Point() {
details = "empty";
}
public Point(String details) {
this.details = details;
}
}
class BasicPoint<X, Y> extends Point {
public X x;
public Y y;
public BasicPoint() {}
public BasicPoint(X x, Y y) {
this.x = x;
this.y = y;
}
}
class Collector<T> {
T elem;
public void collect(T elem) {
this.elem = elem;
}
}
Ich mag Operationen auf Daten anzuwenden und diese Daten als Punkt oder BasicPoint zurückkehren, wie oben erklärt, aber der Compiler mit dem folgenden Fehler beschweren obwohl OUT erstreckt Point:
class Operator<OUT extends Point> {
public Collector<OUT> operate(Collector<OUT> collector) {
// compile error, collect(OUT) cannot be applied to BasicPoint<Integer, Integer>
collector.collect(new BasicPoint<Integer, Integer>(1,2));
return collector;
}
}
Main-Methode sollte wie folgt aussehen:
Collector<BasicPoint<Integer, Integer>> c = new Collector<>();
c = new Operator<BasicPoint<Integer, Integer>>().operate(c);
System.out.println(c.elem.getClass() == new BasicPoint<Integer, Integer>().getClass());
haben Sie den Code, öffnen Sie eine IDE und generieren Sie die Ausgabe. – user1933888
Das Problem ist, dass der Code nicht kompiliert, es zeigt einen Fehler in der Operator-Klasse in der Frage definiert – zequihg50
Was ist der Compiler-Fehler dann? –