0

出于某种原因,我无法弄清楚如何编译它。在此行中找不到 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);
    }
}
4

1 回答 1

1

Skill.get("Level") 是一个游戏对象,而不是一个统计数据。

可能 setValue 只定义在 Stat 中,而不是 GameObject?

如果您确定(例如,如果您使用 instanceof 检查或仅将 Stat 对象放入技能 HashMap 中),您可以将 get 的结果转换为 Stat 对象,如下所示:

((Stat)skill.get("Level")).setValue(newLevel);

编辑:可能只是一个复制粘贴问题:你需要一个构造函数 Stat(String, int) (感谢Subhrajyoti Majumder指出)

于 2013-07-24T04:47:09.793 回答