gpt4 book ai didi

java - 使用 LuaJava 从 Luafile 调用带有可变数字参数的 Java 方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:34:32 25 4
gpt4 key购买 nike

在我们的项目中,我尝试从 lua 调用一个具有可变数量参数的 java 方法。所以 java 方法的代码如下所示:

public static void addEvent( String luaFile, String function, 
int milliseconds, Object...args )
{
events.add( new TimerEvent( luaFile, function, milliseconds, args ) );
}

我想从一个 lua 文件中调用这个方法:

mgr:addEvent( "luaFile.lua", "doSomething", 3000, var )

但是使用 Luajava 我总是得到一个错误:

PANIC: unprotected error in call to Lua API (Invalid method call. No such method.)

即使删除“var”参数或添加更多参数也不起作用。

所以也许你们中的任何人都曾经在 Lua 文件中使用过带有可变参数的 java 方法,并且可以给我提示我如何解决这个问题。我只是不想在 Lua 文件中使用太多代码行,因为我需要创建一个 ArrayList 并添加参数并将此 ArrayList 传递给 Java 方法。所以也许还有一种创建数组的简单方法,我可以将其作为数组传递给 Java。所以解决方案不一定要使用 vargs,但我认为这是一种简单的方法。

提前感谢您的帮助

最佳答案

不幸的是,LuaJava 目前不支持 Java 数组。它不允许构造新的 Java 数组,也不支持对数组的操作(获取和设置值)。因此它无法支持 Object...args 语法。

您可以通过使用带有 0、1、2、3 个参数的专门方法来解决这个问题(我认为您不需要超过 3 个)。然后你会添加一个调用适当函数的 Lua vararg 函数。 3 参数调用的示例:

public static void addEvent3( String luaFile, String function, 
int milliseconds, Object arg1, Object arg2, Object arg3 )
{
events.add(new TimerEvent(luaFile, function, milliseconds, new Object[] {arg1, arg2, arg3}));
}

关于java - 使用 LuaJava 从 Luafile 调用带有可变数字参数的 Java 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9593062/

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