1

我目前正在使用 LuaJ 开发一个项目,这是一个允许 Java 解释 Lua 代码并执行它的库。从我目前收集到的信息来看,我只能传入 Lua 本身可以理解的值,例如原语、表、用户数据等。

我找不到一种方法,例如,通过传入对象引用作为参数来调用 Lua 中定义的函数。

这是有道理的。Lua 无法理解 Java 对象引用,这很公平。

我想出的解决方案本质上是创建一个虚拟内存管理器。在我能想到的最简单的实现中,它本质上是一个Map<Integer,Object>. Integer 位在 Lua 脚本中使用,例如doSomethingWithObject(object),其中 object 实际上是映射中 Integer 键的 LuaValue。

doSomethingWithObject(object)被调用时(这是一个在 Java 中定义的函数,从 扩展而来OneArgFunction),它必须挂接到Map<Integer,Object>,获取由整数值表示的对象并对对象做任何它想做的事情。

这个有味道。我不确定是否有更好的方法来做到这一点。如果有的话,我很想阅读我能得到的任何信息。

4

0 回答 0