gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:47:39 24 4
gpt4 key购买 nike

由于 http://luaj.org/luaj/README.html 上的“Java 函数库”部分,我知道可以在 Lua 中使用 Java 定义的静态方法。 .

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

private static class CallbackStore {        
public void test(final String test) {

}
}

(我知道我也可以在这里使用静态方法,但在现实生活场景中这是不可能的)

我正在使用以下 Lua 代码:

-- Always name this function "initCallbacks"

function initCallbacks(callbackStore)
callbackStore.test("test")
end

这不起作用,因为它期望返回用户数据,但我给了它一个字符串。

我这样调用 Lua 代码:

globals.load(new StringReader(codeTextArea.getText()), "interopTest").call();
CallbackStore callbackStore = new CallbackStore();
LuaValue initCallbacks = globals.get("initCallbacks");
initCallbacks.invoke(CoerceJavaToLua.coerce(callbackStore));

其中 Lua 代码由 codeTextArea.getText() 返回

我的问题的底线是,如何使我的代码以 test 作为实例方法运行?

最佳答案

当访问成员函数时(一般在 Lua 对象中,而不仅仅是 luaj),你必须手动提供 this 参数作为第一个参数,如下所示:

callbackStore.test(callbackStore,"测试")

或者,您可以使用相同的简写符号:

callbackStore:test("测试")

关于java - 如何在Lua中使用Java定义的实例方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25222982/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com