1

我在学校做游戏。我有武器,它是物品的一个子类。我的班级中有一个currentWeapon名为BattleGround. 而且我有一种方法可以搜索和遍历我的“背包”中的所有项目。我希望也可以将其用于武器,因为它们也是物品。

我希望Weapon类的对象也可以称为项目。但我只是不知道。我需要一种新方法来遍历Weapons 吗?Weapons 和s都Item存放在同一个背包中。

如果我将该字段存储currentWeaponWeapon,则无法使用该方法,并且可能无法将Weapons 存储在s 和s 中Hashmap。如果我将它存储为我不能使用类的方法。谢谢你。StringItemItemWeapon

4

1 回答 1

2

如果Weapon是 的子类Item,那么您可以将 a 存储Weapon在对象集合中Item而不会出现任何问题。也许你需要学习的是instanceof操作符:

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,你可以确定你是否真的Item是一个Weapon

于 2013-04-04T08:07:27.297 回答