LuaJ: 将对象引用传递给lua代码

我目前正在使用LuaJ库开发一个项目,该库允许Java解释Lua代码并执行它。从我迄今为止收集的信息来看,我只能传递Lua本身可以理解的值,如基本类型、表、用户数据等。

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

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

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

当调用doSomethingWithObject(object)(这是从OneArgFunction扩展的Java中定义的函数)时,它必须钩入Map<Integer,Object>,获取由整数值表示的对象,并对其进行任何所需操作。

这有点奇怪。我不确定是否有更好的方法来做到这一点。如果有的话,我很想阅读任何有关信息。

点赞