Skip to content

CopyLibs/BeanShell-Android

Repository files navigation

BeanShell-Android-Lambda

Maven Central Version

BeanShell Support For Android

依赖

implementation("io.github.copylibs:beanshell-android-lambda:$version")

用法

基础方法

// 导入 类
interpreter.nameSpace.importClass(clsName)
// 导入 包
interpreter.nameSpace.importPackage(pkgName)
// 设置 变量
interpreter.nameSpace.setVariable(varName, varValue)
// 设置 方法
interpreter.nameSpace.setMethod(bshMethod)
// 执行 代码
interpreter.eval(code)
// 执行 文件
interpreter.source(path)
// 添加 类加载器
interpreter.addClassLoader(clsLoader)

辅助方法

// 获取 Dex 类加载器
BshLoaderHelper.getLoaderByDex(dexPath, parentLoader)
// 获取 Jar 类加载器
BshLoaderHelper.getLoaderByJar(jarPath, parentLoader)
// 获取 Aar 类加载器
BshLoaderHelper.getLoaderByAar(aarPath, parentLoader)

示例

List

// 定义
List list = {1, 2, 3, 4};
var list = new List {1, 2, 3, 4};
var list = (List) {1, 2, 3, 4};

// 相加
var list = (List) {1, 2} + {3, 4};
print(list); // [1, 2, 3, 4]

// 重复
var list = (List) {1, 2} * 2;
print(list); // [1, 2, 1, 2]

// 索引
var list = (List) {1, 2, 3, 4};
print(list[0]); // 1
print(list[-1]); // 4

// 切片
var list = (List) {1, 2, 3, 4};
print(list[1:3]); // [2, 3]
print(list[-3:-1]); // [2, 3]
print(list[:3]); // [1, 2, 3]
print(list[1:]); // [2, 3, 4]
print(list[::2]); // [1, 3]

Lambda

new Thread(() -> System.out.println("Hello World")).start();

运算符

运算符 描述 用法 等价
?? 左侧非 null 时返回左侧,否则返回右侧。 a ?? b a != null ? a : b
??= 仅当左侧为 null 时执行赋值。 a ??= b if (a == null) a = b
?: 左侧为真值时返回左侧,否则返回右侧。 a ?: b a ? a : b
?. 左侧为 null 时直接返回 null,避免空指针错误。 obj?.field obj == null ? null : obj.field
<=> 比较结果固定为 -1 / 0 / 1 a <=> b a < b ? -1 : (a > b ? 1 : 0)

致谢

About

BeanShell Support For Android

Topics

Resources

Stars

Watchers

Forks

Contributors