LuaJ 如何在 Lua 脚本中创建 Java 对象的实例?
LuaJ How to create instance of Java object in Lua script?
我有 Java class:
class SomeClass{
private int i;
public SomeClass(int i){
this.i = i;
}
}
并且我需要在 Lua 脚本中创建此 class 的实例并将其传递给 Java 函数,使用 LuaJ 库。我该怎么做?
这是在 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()
。
我刚刚自己测试了这个,因为我已经很长时间没有了。
我有 Java class:
class SomeClass{
private int i;
public SomeClass(int i){
this.i = i;
}
}
并且我需要在 Lua 脚本中创建此 class 的实例并将其传递给 Java 函数,使用 LuaJ 库。我该怎么做?
这是在 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()
。
我刚刚自己测试了这个,因为我已经很长时间没有了。