2016-04-07 20 views
2

Ich versuche eine Funktion zu erstellen, um zu überprüfen, ob eine Zelle in Tiled übergeben werden kann, indem ich auf eine boolesche benutzerdefinierte Eigenschaft zugreife, die ich jeder Kachel gegeben habe. Dies ist (teilweise) mein Code.Tiled in LibGDX kann java.lang.String nicht in java.lang.Boolean umwandeln

... 
public boolean isCellPassable(int column, int row, MapLayer layer) { 
    boolean canPass = Boolean.valueOf((Boolean) ((TiledMapTileLayer) layer).getCell(column, row).getTile().getProperties().get("can_pass")); 
    if (canPass == true) { 
     return true; 
    } 
    else { 
     return false; 
    } 
} 

public void displayHUD(ShapeRenderer hud) { 
    System.out.println(isCellPassable(0, 6, Main.level1.getLayers().get("base"))); 
... 

Und obwohl in der isCellPassable Funktion warf ich es in einen Booleschen, bekomme ich immer noch diesen Fehler aus irgendeinem Grunde ..

Exception in thread "LWJGL Application" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean 

.. auf der Linie, wo ich den Wert von canPass gesetzt .

Antwort

0

Sie sollten die Umwandlung wahrscheinlich zu entfernen und sicherstellen, dass die Boolean.valueOf(String) Überladung ausgewählt ist.

+0

Wenn ich dies tue, gibt Eclipse mir einen Fehler und schlägt vor, dass ich die Besetzung Boolean hinzufügen. Das sagt mir folgendes: 'Die Methode valueOf (boolean) im Typ Boolean ist nicht anwendbar für die Argumente (Object)' @ Thorbjørn Lindeijer –

+0

das ist der Code nachdem ich deiner Antwort gefolgt bin: 'boolean canPass = Boolean.valueOf ((((TiledMapTileLayer) layer) .getCell (column, row) .getTile(). GetProperties(). Get ("can_pass")); ' –

+0

Hmm, ich habe erwartet, dass die Funktion' get' in der libgdx 'MapProperties' Klasse einen' String zurückgibt 'basierend auf dem Titel Ihrer Frage. Aber tatsächlich gibt es ein 'Objekt' zurück. Daher wird die Überladung 'Boolean.valueOf (String)' nicht ausgewählt. Sie sollten den Typ des zurückgegebenen Objekts überprüfen und gegebenenfalls in eine "Zeichenfolge" umwandeln. –