Was bedeutet die Java-Warnung ?
Typensicherheit: Die Umwandlung von Objekt in Liste <Integer> wird tatsächlich mit der gelöschten Typliste verglichen
Ich erhalte diese Warnung, wenn ich versuche, ein Objekt in einen Typ mit allgemeinen Informationen umzuwandeln, z. B. im folgenden Code:
Object object = getMyList();
List<Integer> list = (List<Integer>) object;
@SuppressWarning
, können Sie die Warnung in den Einstellungen ignorieren. Gehen Sie im Einstellungsfenster zu Java> Compiler> Fehler / Warnungen und ändern Sie im Abschnitt Generische Typen die Option Ungeprüfte generische Typoperation in IgnorierenAntworten:
Diese Warnung ist vorhanden, da Java zur Laufzeit keine Typinformationen in einem Objekt speichert, das Generika verwendet. Wenn
object
es sich also tatsächlich um a handeltList<String>
, gibt esClassCastException
zur Laufzeit keine, es sei denn, auf ein Element aus der Liste wird zugegriffen, das nicht mit dem in der Variablen definierten generischen Typ übereinstimmt.Dies kann weitere Komplikationen verursachen, wenn Elemente mit diesen falschen generischen Typinformationen zur Liste hinzugefügt werden. Jeder Code, der noch einen Verweis auf die Liste enthält, aber die richtigen generischen Typinformationen enthält, hat jetzt eine inkonsistente Liste.
Versuchen Sie Folgendes, um die Warnung zu entfernen:
Beachten Sie jedoch, dass Sie bestimmte Methoden wie add nicht verwenden können, da der Compiler nicht weiß, ob Sie versuchen, ein Objekt vom falschen Typ hinzuzufügen. Das Obige funktioniert in vielen Situationen, aber wenn Sie add oder eine ähnlich eingeschränkte Methode verwenden müssen, müssen Sie nur die gelbe Unterstreichung in Eclipse (oder eine
SuppressWarning
Anmerkung) erleiden .quelle