2016-04-07 8 views
2

私は各タイルに与えたブールのカスタムプロパティにアクセスして、タイルのセルが渡されるかどうかを調べる関数を作成しようとしています。これは私のコードの一部です。LibGDXのタイルはjava.lang.Stringをjava.lang.Booleanにキャストできません

... 
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"))); 
... 

そしてisCellPassable機能に私はcanPassの値を設定する行に.. ..私はまだ、このエラーを取得し、いくつかの理由で、ブールに

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

それをキャストにもかかわらず、 。

答えて

0

おそらくキャストをBooleanに削除し、Boolean.valueOf(String)オーバーロードが選択されていることを確認してください。

+0

これを実行すると、eclipseによってエラーが発生し、キャストをBooleanに追加することを提案します。 'Boolean型のメソッドvalueOf(boolean)は、引数(Object)には適用できません。 '@ThorbjørnLindeijer –

+0

これはあなたの答えに従った後のコードです:' boolean canPass = Boolean.valueOf((( –

+0

ええと、libgdxの 'MapProperties'クラスの' get'関数が 'String()'を返すことが期待されていましたが、これは '' getProperties''() 'あなたの質問のタイトルに基づいて。しかし、実際には 'Object'を返します。したがって、 'Boolean.valueOf(String)'オーバーロードは選択されません。おそらく、返されたオブジェクトの型をチェックし、該当する場合は 'String'にキャストしてください。 –

関連する問題