- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
正如标题所说,我对 LuaJava 和 EnumMap 有疑问。我正在尝试做一个角色扮演游戏库,所以我们有一个具有一些属性的角色和它们的列表。在下面的代码中,我将只报告重要的事情。
我有一个名为 ConcreteAttribute 的类,它扩展了 AbstractAttribute,它有一个带有 String 和两个 int 的构造函数。
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 的枚举,代表您在 RPG 游戏中的统计数据:
public enum StatType {
HP, MP, Attack, Defense;
}
我还有一个名为 PlayableCharacter 的类,它具有(我将只报告重要的事情):
public abstract class PlayableCharacter extends Character{
protected EnumMap<StatType, ConcreteAttribute> statistiche;
//Constructor
public EnumMap<StatType, ConcreteAttribute> getStatistiche(){
return statistiche;
}
还有一个来自 Map 的“put”方法。
要创建一个新角色,我目前正在这样做(“Eroe”扩展了 PlayableCharacter):
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 和很多 Character 时,这不是最佳解决方案。所以我想用 Lua 来创建角色的“具体”状态,这样(小例子):
-- 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
但我收到此错误:PANIC:调用 Lua API 时出现不 protected 错误(尝试调用 nil 值)。问题出在最后一行,但我对 Lua 真的很陌生,我什至不知道 Lua 是否可以处理 EnumMap。
有什么解决办法吗?
谢谢大家,抱歉我的英语不好^^
编辑:我已经编辑了代码,我发现了一个错误
最佳答案
枚举常量是其枚举类的公共(public)成员,但您可以像使用 :
的方法一样访问它。
因此,您需要使用 attributes.Attacco_Fisico
而不是 attributes:Attacco_Fisico
。
关于java - 带有 LuaJava 的 EnumMap(尝试调用 nil 值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25488239/
我有一段代码,我认为应该编译,但事实并非如此。这是代码: public class Program { public void myMethod(List> map) { } public void
有没有人有什么优越的想法,EnumMap或 Properties (或者至少在我的情况下?)我正在使用 3rd 方软件包,该软件包使用他们的方法在我的代码和他们的应用程序之间进行通信,如下所示: Th
出于个人兴趣,我正在对各种转义特殊字符的方法进行基准测试。 一位同事建议 EnumMap 也可能很快,以便检查映射中是否包含字符。 我正在尝试以下代码,它可以使用 containsValue(); 但
我最近一直在阅读 Java。所以我在下面有一个枚举,它充当带有键“JESSIE”和值“My favorite cat”的 map 。 那么为什么有人需要使用 EnumMap?谢谢 public enu
在我的代码中,我有一个枚举,其中每个值都存储一个单独的 EnumMap。但是,当我尝试使用以下代码在构造函数或初始化程序中初始化 EnumMap 时: public static void main(
我正在尝试将实例添加到以下 EnumMap: class ActiveG { EnumMap> map; .. .. } class TGData extends GData
我偶然发现 Java 中没有任何已定义方法的枚举与已定义方法的枚举之间存在奇怪的行为差异:在后一种情况下,Enum.class 和 Enum.getClass() 实际上引用了不同的编译类,即 !En
这个问题已经有答案了: What are the reasons why Map.get(Object key) is not (fully) generic (11 个回答) 已关闭 7 年前。 [
EnumMap 定义如下: Class EnumMap,V> “K extends Enum”到底是什么意思? 我可以理解这个例子: K extends Number 在这种情况下,K 是扩展 Num
这有什么区别: public enum Direction { NORTH(90), EAST(0), SOUTH(270), WEST(180); priva
我是第一次使用 EnumMap,不明白传递的参数实际上在做什么。据我所知,它只是“K.class”,其中 K 是 map 键。这工作得很好,但我在 Java 的其他任何地方都没有看到它,我不清楚它在构
我正在尝试了解如何反序列化 EnumMap。到目前为止,我一直在将 Gson 库用于其他一切,并且取得了成功。这被证明是困难的。 这是一个基本的想法: import java.lang.reflect
我尝试使用一个简单的 java EnumMap 来存储道路类型到默认速度的映射。但我立即遇到了以下问题: 我创建了一个简单的枚举,如下所示: public enum RoadCategory {
我有一个枚举和一个 EnumMap . 我将 map 放入一个类中以隐藏“字节”值。所以我有一个set(Parameter, int)和set(Parameter, boolean)方法。 publi
我遇到了由不同类加载器加载的枚举类型的奇怪行为。在公共(public)库中,我有枚举定义(类似于以下内容): enum MyEnumType { VAL_1, VAL_2, VAL_3 }; 我有第一
在 Java 中,EnumMap 具有恒定的访问时间,因为它们可以通过使用枚举的序数值作为索引的数组来实现。 如果我有一个 EnumMap 如何获取数组? 示例: enum Abc { A, B, C
我需要在 JavaFX 应用程序中初始化以下私有(private)成员,我正在尝试组织 gui 小部件,但我不知道正确的语法,有人可以让我知道正确的语法吗: 这是我用于 EnumMap 的枚举 enu
为什么我不能像这样创建一个 EnumMap: EnumMap amountMap; 我想统计并保存每种巨魔的数量。这样做的好方法是什么? 最佳答案 只需使用Integer。泛型仅适用于对象,不适用于原
有没有一种方法可以迭代 EnumMap 而不会导致每次迭代都创建新对象? entryset 的迭代器每次都返回一个新的 Entry。我能看到的唯一方法是 for(K k: map.keySet())
Map#entrySet 上的枚举并不适用于所有 Map 实现,特别是 EnumMap、IdentityHashMap,这里是来自 Josh Bloch 的 puzzler presentation
我是一名优秀的程序员,十分优秀!