Befestigung Fehler in java: inkompatible Typen: java.lang.Objekt kann nicht konvertiert werden, um capture#1-of?

Meinem code deklariert einen Wert variable vom Typ Objekt:

final Object value;

Diese variable wird dann geladen mit einem Objekt.

Einer generischen collection-variable wird dann erklärt und geladen:

final Collection<?> c = (Collection<?>) argumentDefinition.getFieldValue();

Die collection-variable ist allgemein in beiden Fällen oben, mit Klammern und einem Fragezeichen, die nicht passieren in diesem text.

Wenn ich versuche, verwenden Sie die add-Methode der collection:

c.add(value)

Bekomme ich die Fehlermeldung:

java: inkompatible Typen:java.lang.Objekt kann nicht konvertiert werden, um capture #1-of ?

Ist die add-Methode deklariert, in Sammlung:

boolean add(E e);

Wie kann ich den Fehler beheben? Ich glaube, ich verstehe, was Los ist - der compiler erstellt einen Platzhalter für den generischen Typ Object ist nicht kompatibel mit. Ich kann nicht mit einer raw-Typ für die Sammlung, weil ich bin versuchen zu beseitigen, raw-Typen im code. Brauche ich eine helper-Funktion, und wenn ja, wie genau? Danke.

  • Bitte posten Sie einige tatsächliche code, der das problem veranschaulicht.
  • "mit eckigen Klammern und einem Fragezeichen, die nicht passieren in diesem text." - Formatieren Sie Ihren text wie code
  • Collection<?> bedeutet: eine Sammlung von einem unbekannten Typ. Es könnte eine Ansammlung<String>, oder eine Ansammlung<Integer>, oder eine Ansammlung<Banana>. Sie weiß es nicht. Ja klar, Sie können nicht hinzufügen ein random-Objekt zu dieser Sammlung: wenn das Objekt ein String ist, und die Sammlung ist eine Sammlung, die<Integer>,, das würde ruinieren Ihre Typ-Sicherheit.
  • Was bedeutet argumentDefinition.getFieldValue() zurück? Welche Art?
  • pathfinderelite - argumentDefinition.getFieldValue() gibt und Objekt.
  • JB Nizet - Die einzige Sache, die immer Hinzugefügt wird, ein reines Objekt, und ich denke, die Sammlung wird immer verwendet, um Objekte enthalten, also denke ich ist das OK. Der code funktioniert, wenn der rawtype verwendet wird.
  • Vielen Dank an alle.

Schreibe einen Kommentar