Android开发 java调用lua函数 lua调用java类 :https://blog.csdn.net/weixin_41949019/article/details/117469396
## java类 强制转换成lua类
LuaValue CLASS1 = CoerceJavaToLua.coerce(new CLASS1());
LuaValue CLASS2 = CoerceJavaToLua.coerce(new CLASS2());
** lua脚本必须在第一行写上这样才可以获取到; 但在require lib之后
local CLASS1,CLASS2 = …
* 类函数 脚本引用 CLASS1:funx(xxx)
=================================================
https://github.com/ichenhe/Android-Lua
1、所以要在 java 中使用 Lua,首先我们需要创建一个 Lua 运行环境,也就是 Lua 栈:
```java
LuaState lua = LuaStateFactory.newLuaState(); //创建栈
lua.openLibs(); //加载标准库
lua.close(); //养成良好习惯,在执行完毕后销毁Lua栈。
```
2、使用 `lua.LdoString()` 可以轻松执行一段 Lua 代码。通过其返回值可以判断执行是否成功。`0` 表示成功否则表示不成功。若不成功则错误信息会直接入栈,我们可以通过 `lua.toString(-1)` 获取到。
同时也提供了 `lua.LdoFile()` 来直接执行 Lua 源码文件,但请注意这里只允许传入本地文件路径且具有访问权限。
3、java:
```java
lua.getGlobal("v1"); // 请求 v1 变量的值,入栈
String s = lua.toString(-1) // 从栈中取得了值
lua.pop(1); // 及时将不用的数据出栈避免栈溢出
// 此时 s = "this is value from lua"
```
记住,`lua.toXXX()` 函数在取得值之后是不会自动出栈的。记得手动弹出以免栈溢出。`lua.pop()` 可以从栈顶弹出指定个数的元素。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?