Из руководства LuaJava кажется, что вы должны манипулировать прокси-объектами, возвращаемыми Java, используя их методы Java (используя синтаксис двоеточия Lua для объектно-ориентированных вызовов, т.е. my_proxy_array_list:get(5)
).
Он не описывает никакой встроенной трансляции массивов в таблицы, поэтому, если вам нужно построить таблицу из массива Java (скажем, потому что вы хотите запустить функцию из Lua *)1008 * библиотеки), вам придется перебирать массив (используя для этого свои знания Java) и помещать значение каждого индекса массива в соответствующий индекс таблицы.
Если, однако,вам просто нужно что-то, что работает как таблица Lua, вы можете сделать что-то в Lua с помощью метатаблицы с функциями, которые преобразуют __index
и __newindex
в соответствующие методы Java (вероятно, get
и * 1016).*), вот так:
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)