出于某种原因,我无法弄清楚如何编译它。它在这一行找不到setValue函数:'skill.get(“Level”)。setValue(newLevel);'
import java.util.HashMap;
public class Stat extends GameObject
{
int value;
public Stat()
{
name = "Accuracy";
value = 1;
}
public int getValue()
{
return value;
}
public void setValue(int newValue)
{
value = newValue;
}
}
import java.util.HashMap;
public class Skill extends Stat
{
protected HashMap<String, GameObject> skill;
public Skill()
{
name = "swords";
description = "Learn how to master the art of swordmanship";
skill.put("Level",new Stat("Level",1));
skill.get("Level").setValue(newLevel);
}
}
答案 0 :(得分:1)
skill.get(“Level”)是一个GameObject,而不是Stat。
可能setValue只在Stat中定义,而不是GameObject?
如果您确定(例如,如果您使用instanceof进行检查或仅将Stat对象放入skill-HashMap中),您可以将get的结果转换为Stat对象,如下所示:
((Stat)skill.get("Level")).setValue(newLevel);
编辑:可能只是一个复制粘贴问题:你需要一个构造函数Stat(String,int)(感谢Subhrajyoti Majumder指出它)