如何在Lua中使用Java定义的实例方法?
我知道在Lua中使用Java定义的静态方法是可能的,这是由于上的“Java函数库”一节 然而,我正在努力找出如何使用相同的实例方法,这里有一个简短的示例:如何在Lua中使用Java定义的实例方法?,java,lua,luaj,Java,Lua,Luaj,我知道在Lua中使用Java定义的静态方法是可能的,这是由于上的“Java函数库”一节 然而,我正在努力找出如何使用相同的实例方法,这里有一个简短的示例: private静态类CallbackStore{ 公共空隙试验(最终管柱试验){ } } (我知道我也可以在这里使用静态方法,但在现实生活中不可能) 我正在使用以下Lua代码: --始终将此函数命名为“initCallbacks” 函数initCallbacks(callbackStore) callbackStore.test(“test
private静态类CallbackStore{
公共空隙试验(最终管柱试验){
}
}
(我知道我也可以在这里使用静态方法,但在现实生活中不可能)
我正在使用以下Lua代码:
--始终将此函数命名为“initCallbacks”
函数initCallbacks(callbackStore)
callbackStore.test(“test”)
结束
这不起作用,因为它期望返回userdata,但我给它一个字符串
我这样称呼Lua代码:
globals.load(新的StringReader(codeTextArea.getText()),“interopTest”).call();
CallbackStore CallbackStore=新CallbackStore();
LuaValue initCallbacks=globals.get(“initCallbacks”);
initCallbacks.invoke(concurejavatolua.concure(callbackStore));
其中Lua代码由codeTextArea.getText()返回
我的问题的底线是,如何使我的代码以test
作为实例方法运行?当访问成员函数(通常在Lua对象中,而不仅仅是luaj中)时,您必须手动提供此
参数作为第一个参数,如下所示:
callbackStore.test(callbackStore,“test”)
或者,您可以对同一事物使用速记符号:
callbackStore:test(“test”)
你能详细说明一下并得到一个有效的例子吗?对不起,我出去吃午饭了。当我再次查看这个问题时,我注意到了另外一个问题-你应该调用test
作为callbackStore:test(“test”)
,:
操作符是callbackStore.test(“callbackStore”,“test”)
的缩写,所以这可能是你的问题。我会在有时间后再试。。。因为我还需要重建一些有问题的代码。非常感谢!它现在可以使用:
-OOP符号,请您将您的答案更改为您在评论中粗略地说的内容,这样我就可以接受了?