luajava数值和对象传递的一个例子
2015-02-14 14:46
232 查看
转自:http://univasity.iteye.com/blog/493339
http://hi.baidu.com/lff0305/blog/item/fd666931da276111eac4af45.html )
-----------------------------------------
-- test01.lua
Lua代码
function sum(a, b)
return a+b
end
function test1(v)
v:init()
end
/////////////////////////////////////////////////////
// Test01.java
Java代码
public class Test01 {
/**
* @param args
*/
public static void main(String[] args) {
LuaState L = LuaStateFactory.newLuaState();
// 加载lua标准库,否则一些lua基本函数无法使用
L.openLibs();
// doFile
L.LdoFile("res/test01.lua");
//---------------------------------------------值传递测试
// 找到函数 sum
L.getField(LuaState.LUA_GLOBALSINDEX, "sum");
// 参数1压栈
L.pushNumber(100);
// 参数2压栈
L.pushNumber(50);
// 调用,共2个参数1个返回值
L.call(2, 1);
// 保存返回值到result中
L.setField(LuaState.LUA_GLOBALSINDEX, "result");
// 读入result
LuaObject lobj = L.getLuaObject("result");
// 打印结果
System.out.println(lobj.getNumber());
//---------------------------------------------对象传递测试
Value v = new Value();
L.getField(LuaState.LUA_GLOBALSINDEX, "test1");
try {
L.pushObjectValue(v);
} catch (LuaException e) {
e.printStackTrace();
}
L.call(1, 0);
v.print();
}
}
class Value {
private int i;
public void init(){
i = 111;
}
public void print(){
System.out.println(i);
}
}
luaInJava.rar (116.1 KB)
描述: 部分例子源代码
下载次数: 236
http://hi.baidu.com/lff0305/blog/item/fd666931da276111eac4af45.html )
-----------------------------------------
-- test01.lua
Lua代码
function sum(a, b)
return a+b
end
function test1(v)
v:init()
end
/////////////////////////////////////////////////////
// Test01.java
Java代码
public class Test01 {
/**
* @param args
*/
public static void main(String[] args) {
LuaState L = LuaStateFactory.newLuaState();
// 加载lua标准库,否则一些lua基本函数无法使用
L.openLibs();
// doFile
L.LdoFile("res/test01.lua");
//---------------------------------------------值传递测试
// 找到函数 sum
L.getField(LuaState.LUA_GLOBALSINDEX, "sum");
// 参数1压栈
L.pushNumber(100);
// 参数2压栈
L.pushNumber(50);
// 调用,共2个参数1个返回值
L.call(2, 1);
// 保存返回值到result中
L.setField(LuaState.LUA_GLOBALSINDEX, "result");
// 读入result
LuaObject lobj = L.getLuaObject("result");
// 打印结果
System.out.println(lobj.getNumber());
//---------------------------------------------对象传递测试
Value v = new Value();
L.getField(LuaState.LUA_GLOBALSINDEX, "test1");
try {
L.pushObjectValue(v);
} catch (LuaException e) {
e.printStackTrace();
}
L.call(1, 0);
v.print();
}
}
class Value {
private int i;
public void init(){
i = 111;
}
public void print(){
System.out.println(i);
}
}
luaInJava.rar (116.1 KB)
描述: 部分例子源代码
下载次数: 236
相关文章推荐
- 记录一个Java值传递和对象传递之间的例子展示
- 一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处
- Java中的反射机制(二) 一个利用反射进行对象拷贝的例子
- Java引用传递的一个例子
- Java - 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- 一个简单的例子,证明JAVA参数是通过值传递
- Java中int和Integer的区别:int 是基本类型,直接存数值 ;integer是对象,用一个引用指向这个对象
- Java中的反射机制(二) 一个利用反射进行对象拷贝的例子
- Java中的反射机制 一个利用反射进行对象拷贝的例子
- java面试题解惑:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- 一个深入理解JAVA传统线程对象创建的例子
- 一个使用jackson转换java对象的例子
- 一个例子说明java数据类型包括对象是赋值还是引用!!!
- Java中实例是什么意思?补充:new 一个对象是实例吗? 能举个小例子吗?
- PHP跳转到另一个画面,并且带着该行内的一个数值作为参数传递给下一个页面.能给例子吗
- java面向对象-异常处理的一个例子
- Java中的反射机制(二) 一个利用反射进行对象拷贝的例子
- java面试题:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- 一个小例子看懂java对象初始化执行过程
- Java8--传递代码:一个例子