###前提・実現したいこと
こんにちは毎度お世話になっております。
今回は、ツクールのような、RPGゲームをつくりたいです。
プレイヤーがアイテムを取得する際に、ほかのオブジェクト(アイテム)を参照する必要が出てきました。だから、マップを管理するクラス(下記のMapFiedクラス)に対して、指定された位置にどのオブジェクトが存在するかを配列として返すメソッドを作りました。
そこでエラーが出てしまいます。
どうぞよろしくお願いします。
この質問に出てくるクラスは2つです。
- MapObject クラス(キャラクター、落ちてるアイテムなどの親クラス。要するにマップ上にあるオブジェクトのクラス)
- MapField クラス(マップに関する情報を管理するクラス。例えば、マップの大きさ、マップチップ、マップ上に存在する全ての MapObject など)
###発生している問題・エラーメッセージ
Exception in thread "Thread-1" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [LMapObject;
上記のようなエラーが発生してしまいます。色々調べてみましたが、間違いがわかりませんでした
###該当のソースコード
java
1class MapField{ 2 // マップの上に存在するオブジェクト全てを格納 3 private ArrayList<MapObject> mapObject = new ArrayList<MapObject>(); 4 5 // 指定された座標に存在するオブジェクトを mapObject から検索し、それらを配列として返す(同じ座標に複数の MapObject が存在する場合もあるため) 6 MapObject[] getMapObject(int x, int y){ 7 ArrayList<MapObject> array = new ArrayList<MapObject>(); 8 for(MapObject o : mapObject){ 9 int ox = o.getX(); 10 int oy = o.getY(); 11 if(ox == x && oy == y){ 12 array.add(o); 13 } 14 } 15//この return で ClassCastException エラー 16 return (MapObject[])array.toArray(); 17 } 18}
なお、返り血の型は、なるべく変更したくはありません。
回答1件
あなたの回答
tips
プレビュー