Ich versuche, den folgenden Code zu kompilieren:
private String dataToString(){
Map data = (HashMap) getData();
String toString = "";
for( MyClass.Key key: data.keySet() ){
toString += key.toString() + ": " + data.get( key );
return toString;
}
Ich erhalte einen Fehler in der Zeile des for-Loops, der besagt:
inkompatible Typen
gefunden: java.lang.Object
erwartet: MyClass.Key
Die getData()
Methode gibt ein Object
zurück (aber in diesem Fall hat das zurückgegebene Object
die Struktur eines HashMaps
). MyClass.Key
ist ein enum, das ich für die Zwecke meiner Anwendung erstellt habe (in einer anderen Klassendatei - MyClass
).
Als ich eine foreach-Schleife mit derselben Struktur in MyClass.java
erstellt habe, bin ich auf dieses Problem nicht gestoßen.
Was mache ich falsch?
0 Stimmen
Es ist nicht notwendig, getData() in ein HashMap zu casten, wenn Sie es nur einem Map zuweisen. Werfen Sie es stattdessen in eine Map. Was ist, wenn getData() kein HashMap zurückgibt (wie beispielsweise ein TreeMap)?
0 Stimmen
Ich habe hier tatsächlich einige Informationen weggelassen ... getData() ist tatsächlich getData(String key), wobei key das gewünschte Objekt angibt, das ich erhalten möchte. Da ich also das Objekt kenne, das ich erhalte, weiß ich genau, in was ich es umwandeln sollte.