1

学校でゲームを作っています。アイテムのサブクラスである武器を持っています。currentWeaponそして、クラスに というフィールドがありますBattleGround。そして、「バックパック」内のすべてのアイテムを検索して反復する方法があります。武器もアイテムなので武器にも使えたらいいなと思っていました。

私が望んでいたのは、Weaponクラスのオブジェクトもアイテムと呼ぶことができるということでした。しかし、私は単に知らないだけです。sを反復する新しいメソッドが必要Weaponですか? Weaponとの両方Itemを同じバックパックに収納する必要があります。

フィールドcurrentWeaponを として保存Weaponすると、メソッドを使用できず、 s とsにWeaponsを保存できない可能性があります。として保存すると、クラスのメソッドを使用できません。ありがとうございました。HashmapStringItemItemWeapon

4

1 に答える 1

2

Weaponが のサブクラスである場合、 をオブジェクトのコレクションに問題なくItem格納できます。おそらく、学ぶ必要があるのは演算子です。WeaponIteminstanceof

List<Item> items = new ArrayList<>();

// add some items to the list

for (Item item : items) {
  if (item instanceof Weapon) {
    Weapon weapon = (Weapon) item; // cast the item to a weapon
    weapon.someWeaponMethod();
  }
}

を使用すると、実際に であるinstanceofかどうかを判断できます。ItemWeapon

于 2013-04-04T08:07:27.297 に答える