Я использую Java instanceof, но он, похоже, не работает.Почему «экземпляр» не работает?
У меня есть три классы java, которые расширяют класс Hero.
Hero.java класс:
public abstract class Hero {
protected int health;
public Hero() {
}
}
Другие три классы:
public class Archer extends Hero {
public Archer() {
}
}
public class Mage extends Hero {
public Mage() {
}
}
public class Warrior extends Hero {
public Warrior() {
}
}
У меня есть этот главный класс WelcomeScreen.java
public class WelcomeScreen {
private Archer archer;
private Mage mage;
private Warrior warrior;
private Hero hero;
public WelcomeScreen() {
// choose a hero (archer/mage/warrior)
hero = archer;
new Game(hero);
}
public static void main(String args[]) {
new WelcomeScreen();
}
}
что инстанцирует го е Game.java класс
public class Game {
public Game(Hero chosenHero) {
if (chosenHero instanceof Mage) {
System.out.println("you selected mage");
} else if (chosenHero instanceof Archer) {
System.out.println("you selected archer");
} else if (chosenHero instanceof Warrior) {
System.out.println("you selected warrior");
} else {
System.out.println("you selected NOTHING");
}
}
}
В Game.java, код предназначен для проверки chosenHero является ли объект Archer.java, Warrior.java или Mage.java, но результат: «Вы выбрали НИЧЕГО». Почему instanceof не может проверить, присвоен ли я уже Archer.java на приветственном экране?
лучник переменная равна нулю. - где вы называете 'new Archer()' где угодно? –
Вам нужно научиться использовать отладчик, а затем использовать его. Также большое использование 'instanceof' - это структура, которая выделяет запах кода и ее следует избегать. –
@HovercraftFullOfEels umm ... ладно ... Как это пахнет? – RobotKarel314