android lua调用java_GitHub - L-JINBIN/AndroidLua: Lua 5.3.1 的 Android 加强版实现

Android Lua

Lua 的 Android 加强版实现,基于 Lua5.3.1 和 LuaJava,改进并增加了部分功能。

相对于LuaJava的改进

1.使用 "包名+类名" 访问 Java 类

import "bin.androidlua.TestObject"

test = TestObject()

-- 也可以写成

test = bin.androidlua.TestObject()

但不支持内部类,例如访问 TestObject.TwoMethod 时,得这么写

import "bin.androidlua.*"

TwoMethod = TestObject_TwoMethod -- TestObject$TwoMethod

包名的开头(bin、java、javax、com 等)需要在 LuaRunner.java 中添加

2.优化方法重载

在开始的测试中发现 Lua 中调用 Java 方法时,对于方法重载(即方法名相同但参数不同),匹配机制十分糟糕。

例如方法 a(Object) 和 a(String),参数传入 "abc" 时,两个方法都可以接受该参数,但明显应该匹配并调用 a(String) 才对。

而原先的匹配机制是按顺序匹配,然后调用第一个匹配成功的方法,只要 a(Object) 在 a(String) 前面,传入 "abc" 时就会调用成 a(Object) 了。

为此我设计了一套评分模式,具体实现可查看 AssignScorer.java

3.增加 Getter 和 Setter 功能

-- 对于 Java 对象 a

x = a.getName()

-- 可简写成

x = a.name

a.setName(x)

-- 可简写成

a.name = x

只做了 get 和 set,is 暂时没做,有兴趣的可以修改 LuaJavaAPI.java 中的 javaGetter 方法。

4.增加 Java 接口实现功能

通过 Lua 代码实现 Java 的接口,具体看 InterfaceTest.lua,已经写得很详细了。

5.增强异常处理功能

不论是 Lua 代码出现异常,还是调用 Java 代码时出现异常,你都可以在 Lua 或者 Java 中捕获它,并且可以得到异常时的调用栈。

模仿 Java 粗糙地做了 try 和 catch 功能,支持 throw 来重新抛出异常。

运行说明

我没有写 UI 界面,上面提到的例子均在单元测试 LuaJavaTest.java 中进行调用。

运行后请在 Logcat 查看输出,建议选择 No Filters 并输入 Lua 来过滤日志。

参考项目

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值