Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Lua中使用Java定义的实例方法?_Java_Lua_Luaj - Fatal编程技术网

如何在Lua中使用Java定义的实例方法?

如何在Lua中使用Java定义的实例方法?,java,lua,luaj,Java,Lua,Luaj,我知道在Lua中使用Java定义的静态方法是可能的,这是由于上的“Java函数库”一节 然而,我正在努力找出如何使用相同的实例方法,这里有一个简短的示例: private静态类CallbackStore{ 公共空隙试验(最终管柱试验){ } } (我知道我也可以在这里使用静态方法,但在现实生活中不可能) 我正在使用以下Lua代码: --始终将此函数命名为“initCallbacks” 函数initCallbacks(callbackStore) callbackStore.test(“test

我知道在Lua中使用Java定义的静态方法是可能的,这是由于上的“Java函数库”一节

然而,我正在努力找出如何使用相同的实例方法,这里有一个简短的示例:

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符号,请您将您的答案更改为您在评论中粗略地说的内容,这样我就可以接受了?