LuaJ如何在Lua脚本中创建Java对象的实例?

时间:2016-02-14 12:31:33

标签: java lua luaj

我有Java类:

class SomeClass{
 private int i;
 public SomeClass(int i){
  this.i = i;
 }
}

我需要在Lua脚本中创建此类的实例,并使用LuaJ库将其传递给Java函数。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

这是在lua.org上找到的一些示例代码:

jframe = luajava.bindClass( "javax.swing.JFrame" )
frame = luajava.newInstance( "javax.swing.JFrame", "Texts" );
frame:setDefaultCloseOperation(jframe.EXIT_ON_CLOSE)
frame:setSize(300,400)
frame:setVisible(true)

来源:http://www.luaj.org/luaj/3.0/README.html#luajava

以您的示例为例,这应该转换为:

local obj = luajava.newInstance("your.package.SomeClass",123)
print(obj.i) --> nil -- Since it's a private field

如果您使用方法public int getValue(),则可以使用obj:getValue()

我刚刚对此进行了测试,因为我已经很长时间了。