首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EnumMap与LuaJava (尝试调用零值)

EnumMap与LuaJava (尝试调用零值)
EN

Stack Overflow用户
提问于 2014-08-25 14:30:54
回答 1查看 209关注 0票数 2

正如标题所述,我对LuaJava和EnumMap有问题。我试图做一个RPG库,所以我们有一个字符和一些属性和列表。在下面的代码中,我只报告一些重要的事情。

我有一个名为ConcreteAttribute的类,它扩展了AbstractAttribute,它有一个带有字符串和两个int的构造函数。

代码语言:javascript
复制
public abstract class AbstractAttribute {

protected String name;
protected int baseValue;
protected double baseMolt;

public AbstractAttribute(String name, int valoreBase, double moltBase){
    this.name = name;
    this.baseValue = valoreBase;
    this.baseMolt = moltBase;
}

/*Getters and Setters*/

}

然后我有一个名为StatType的Enum,它代表了RPG游戏中的stat:

代码语言:javascript
复制
public enum StatType {
HP, MP, Attack, Defense;
}

我还有一个名为PlayableCharacter的类,它有(我只报告重要的事情):

代码语言:javascript
复制
public abstract class PlayableCharacter extends Character{

protected EnumMap<StatType, ConcreteAttribute> statistiche;

//Constructor

public EnumMap<StatType, ConcreteAttribute> getStatistiche(){
    return statistiche;
}

以及地图中的"put“方法。

为了创建一个新字符,我目前正在这样做("Eroe“扩展了PlayableCharacter):

代码语言:javascript
复制
    public static void main(String[] args) {

    PlayableCharacter pers = new Eroe("Eroe 1");
    ConcreteAttribute atk = new ConcreteAttribute("Attacco", 20, 0);
    pers.getStatistiche().put(StatType.Attacco_Fisico, atk);

}

而且工作得很好,但我不认为它是最好的解决方案,当你有大量的ConcreteAttribute和大量的字符。所以我想用Lua来创造“具体”的性格,这样(小的例子):

代码语言:javascript
复制
-- Eroe 1.lua
function create(eroe)
    eroe:setName("Eroe 1")
    attributes =  luajava.bindClass("personaggi.attributi.StatType")
    attacco = luajava.newInstance("personaggi.attributi.ConcreteAttribute", "Attacco", 20, 0) 
    eroe:getStatistiche():put(attributes.Attacco_Fisico, attacco)
 end

但是我得到了这个错误:恐慌:调用Lua中的无保护错误(试图调用一个零值)。问题在于最后一行,但我对Lua非常陌生,我甚至不知道Lua是否能处理EnumMap。

有什么解决办法吗?

感谢所有的人,并为我糟糕的英语^^道歉

编辑:我已经编辑了代码,我发现了一个错误

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-25 15:41:04

枚举常量是其枚举类的公共成员,但您正在访问它,就像使用:的方法一样。

因此,您需要使用的不是attributes:Attacco_Fisico,而是attributes.Attacco_Fisico

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25488239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档