从LuaJava 手册看来,您必须使用 Java 方法(使用 Lua 的冒号语法进行面向对象的调用,即my_proxy_array_list:get(5)
)来操作 Java 返回的代理对象。
它没有描述数组到表的任何内置转换,因此如果您需要从 Java 数组构造一个表(例如,因为您想在其上运行 Luatable
库中的函数),您将不得不迭代在 Array 上(使用您的 Java 知识来做到这一点)并将每个 Array 索引的值放入相应的表索引中。
但是,如果您只需要像 Lua 表一样工作的东西,您可以在 Lua 中使用元表制作一些东西,该元表具有可以转换__index
为__newindex
适当的 Java 方法(可能是get
和set
)的函数,如下所示:
local wrap_lj_proxy; do
local proxy_mt = {}
function proxy_mt:__index(k)
return self.proxy:get(k)
end
function proxy_mt:__newindex(k,v)
return self.proxy:set(k,v)
end
function wrap_lj_proxy (proxy)
return setmetatable({proxy=proxy},proxy_mt)
end
end
使用上述方法,您可以wrap_lj_proxy
使用 ArrayList 调用并取回可以使用索引运算符索引的对象:
local indexable = wrap_lj_proxy(myAL)
print(indexable[5]) -- equivalent to myAL:get(5)