我有一個名爲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