我理解通过jni
构架从Rust中调用Java,需要一些模板代码,大致如下:
je.call_method(self.rimuru, "shell2Pixels", "(II[B)V", &[
JValue::from(width),
JValue::from(height),
JValue::from(rgbs.as_obj()),
])?;
我想可以使用宏来改进这个功能,类似于以下代码:
java_call_method!(self.rimuru, "shell2Pixels", (), width, height, rgbs)?;
该宏将负责从各种参数的类型构建签名字符串(II[B)V
。类似的功能已经存在了吗?我不确定是否可以使用普通宏而不是过程宏来实现。
(II[B)V
表示你正在传递的参数类型,还是函数期望的类型?如果是后者,构建该字符串的宏将非常不安全。 - mcartonjobject
,而其他更高级别的层次则需要模板化的包装类)。但在版本1中,我不会处理这个问题。 - Mutant Bob