Foreach遍历Lua中的Java Hashmap

时间:2014-01-31 01:40:44

标签: java lua luajava

所以我是Lua的新手,我已经使用我的Java代码运行了LuaJava,但是我一直试图弄清楚如何在Lua中的hashmap上运行foreach循环。

在我的java代码中,我有这个:

爪哇

public class EntityManager {

    public static EntityManager EntityManager = new EntityManager();

    private Map<Integer, Entity> entities = new HashMap<Integer, Entity>();

    public Map<Integer, Entity> entities() {
        return entities;
    }
        ....
}

public class Entity {
    private int id;
    ....
    public int getId() {
        return id;
    }

    public EntityManager getManager() {
        return EntityManager.EntityManager;
    }
}

然后我得到了我的lua脚本,我正在试图弄清楚如何遍历EntityManager中hashmap中的所有实体:

的Lua

owner = {} -- I set this to an Java object that is a child of the Entity class
function doSomeStuff()
    for i, e in pairs(owner:getManager():entities()) do
        if (e:getId() ~= owner:getId()) then
            -- Do some stuff here
        end
    end
end

我已经为我的函数等设置了我需要的所有工作,但是我不知道如何创建一个类似于Java foreach循环的Lua,来迭代我的Java hashmap Lua剧本。

此外,我想知道如何检查Lua中对象的类型,看它是否是我的一个Java类的实例。例如,在Java中如果我想查看对象是否是对象类型,我将执行以下操作:

Entity e;
....
if (e instanceof EntityTypeA) {
    // e is of Entity type A
} else if (e instanceof EntityTypeB)
    // e is of Entity type B
}

哦,我不完全确定我传入Lua脚本的Java对象是否保留了它的Java类类型,我也不知道如何去做这样的事情。

顺便说一下,我正在使用开普勒项目的LuaJava

感谢。

0 个答案:

没有答案