LuaJava:从Java调用Lua对象上的方法?

LuaJava:从Java调用Lua对象上的方法?,java,scala,lua,luajava,Java,Scala,Lua,Luajava,我有Java/Scala代码,通过LuaJava调用Lua。我想模拟一些从J/S管道到Lua管道的对象层次结构;基本上在语言中有伴随对象。换句话说,如果我在J/S中创建一个“Cracker”,我将在Lua中创建一个“Cracker”对象。然后,当我在J/S中调用像eatCracker这样的方法时,我也可以调用Lua伴生对象的eatCracker 问题是,我不知道如何创建和存储Lua对象,然后如何调用特定对象上的方法 有人能提供帮助吗?当您将对象从J/S推送到Lua解释器并创建对其的全局引用时,然

我有Java/Scala代码,通过LuaJava调用Lua。我想模拟一些从J/S管道到Lua管道的对象层次结构;基本上在语言中有伴随对象。换句话说,如果我在J/S中创建一个“Cracker”,我将在Lua中创建一个“Cracker”对象。然后,当我在J/S中调用像eatCracker这样的方法时,我也可以调用Lua伴生对象的eatCracker

问题是,我不知道如何创建和存储Lua对象,然后如何调用特定对象上的方法


有人能提供帮助吗?

当您将对象从J/S推送到Lua解释器并创建对其的全局引用时,然后运行并访问该对象的Lua脚本将访问与J/S端相同的对象,而不是它的副本。因此,一旦脚本结束,Java/Scala就会看到包含Lua脚本修改的状态数据成员的对象。如果J/S随后对其进行修改,并运行另一个脚本访问该对象,则该脚本将看到J/S修改的新状态

因此,调用方法时没有模仿:方法是绑定到对象的函数,因此从Lua或Java/Scala调用它会导致访问同一对象和同一内存块

但是,构造时需要进行模拟:如果在J/S中构造对象,则必须显式地将其推送到Lua解释器,使其可用;如果解释器运行的Lua脚本创建了一个新对象,则J/S必须通过引用该对象的全局变量来提取它。对于处置,我打赌当J/S或Lua两边都没有对对象的引用时,该对象将自动完成


因此,您所需要做的就是确保在这两种环境中您想要的对象都在J/S侧推拉,而Lua侧是从属的。我认为自动化这不是一个好主意:只显式地推/拉双方都需要的东西,不多不少

显示您尝试过的代码。。。