我有一个名为Spell的抽象类。技能类假设有几个子类,比如DamageSpell,ChangeStatSpell等。Java - 列表和方法
问题是技术性的 - 在DamageSpell类中 - 在声明损坏方法之后 - 它说它找不到getSpell(java找不到符号:?方法getSpell()我怎样才能解决这个我会很感激
abstract public class Spell {
private String name;
private int spellLevel;
private int manaCost;
Spell(String name, int spellLevel , int manaCost){
this.name = name;
this.spellLevel = spellLevel;
this.manaCost = manaCost;
}
String getSpellName(){ return name; }
int getSpellLevel() {return spellLevel; }
int getManaCost(){ return manaCost; }
}
public class DamageSpell extends Spell {
private int n;
private int dice;
private int base;
private int stepLevel;
private int maxCasterLevel;
DamageSpell(String name, int spellLevel, int manaCost, int n, int dice, int base, int stepLevel, int maxCasterLevel){
super(name, spellLevel, manaCost);
this.n = n;
this.dice = dice;
this.base = base;
this.stepLevel = stepLevel;
this.maxCasterLevel = maxCasterLevel;
}
static List<DamageSpell> damageSpellsList = new ArrayList<DamageSpell>();
static
{
damageSpellsList.add(new DamageSpell("Magic Missiles", 1, 2, 1, 4, 1, 2, 9));
// damageSpellsList.add(new DamageSpell("Scorching Ray ", 2, 4));
damageSpellsList.add(new DamageSpell("Fireball", 3, 6, 1, 6, 1, 1, 10));
//damageSpellsList.add(new DamageSpell("Ice Storm", 4, 8));
}
public static void damage(String spellName, Character attacker, Character target){
DamageSpell spell = damageSpellsList.getSpell(spellName);
int damage = 0;
int casterLevel = Math.min(attacker.getLevel(), spell.maxCasterLevel);
int totalRolls = (casterLevel-spell.base)%spell.stepLevel;
for (int i = 1; i <= totalRolls ; i++) {
damage += DiceRoller.roll(spell.n, spell.dice);
}
target.setCurrentHp(target.getCurrentHp() - damage);
System.out.println(" You dealt " + damage + " to the enemy");
}
public DamageSpell getSpell(String spellName) {
try {
for (Iterator<DamageSpell> iter = damageSpellsList.iterator(); iter.hasNext();) {
DamageSpell spell = iter.next();
if (spellName.equals(spell.getSpellName())) {
return spell;
}
}
} catch (Exception e){
System.out.println(spellName + " haven't been found in spells-list");
return null;
}
return null;
}
}
哦,我错过了一些东西。在我的文件的前一个版本中,另一个类使用了MageSpellsList。在mageSpellsList上运行getSpell(),所以我没有问题。我复制了它,并且改了几个字母,但是我没有注意到一个名为getSpell的类,这里是一个列表。傻我:) – Niminim