因此,我正在做一些有关制作小游戏原型的课程。我有这些简单的类(以及其他一些不相关的类):

abstract class Weapon {
    int damage;
    int cost;
}

abstract class RangedWeapon extends Weapon {
    int range;
    int rounds;
}

class ExtraRounds extends Item{
    int cost = 20;
    int uses = 1;
    void use(GameState state){
        if (state.currentCharacter.weapon instanceof RangedWeapon){
            state.currentCharacter.weapon.rounds += 10;
        }
    }

}


但是当尝试编译这个时

Implementations.java:56: error: cannot find symbol
            state.currentCharacter.weapon.rounds += 10;
                                         ^
  symbol:   variable rounds
  location: variable weapon of type Weapon


我只需要类ExtraRounds来检查weapon是否属于类RangedWeapon并采取相应的措施,但是我不知道哪里出了问题。任何帮助表示赞赏

最佳答案

您的武器属于武器类。您必须将其强制转换为RangedWeapon,以便编译器知道它是RangedWeapon:

if (state.currentCharacter.weapon instanceof RangedWeapon){
   ((RangedWeapon)state.currentCharacter.weapon).rounds += 10;
}

关于java - Java无法识别对象属于子类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49534658/

10-10 21:58