JNI如何获取本机方法的返回值对象

时间:2018-01-03 02:57:21

标签: java jvm java-native-interface

我的问题是JNI如何获取本机方法的返回值并将其提供给JVM(推入本机堆栈)。

例如,如果我有一个本机方法toString,并且JVM知道toString方法的代码在哪里,JNI如何调用该方法?

2 个答案:

答案 0 :(得分:0)

Java没有从本机方法接收C样式的字符数组。被调用者构建Java对象(例如,String)并通过引用将其传递给调用者。使用原语类型,例如 int ,结果按值传递,但实现细节是JVM专用的。

答案 1 :(得分:0)

Java仅支持原语和引用。传递或返回没有String对象类型,只有每个引用到String。从C的角度来看,此引用为void *,并且对象中的数据不会发生转换。

  

我想知道这个虚拟机是如何工作的,而不是如何将字符数组转换为java字符串

Convert char* to jstring in JNI, when char* is passed using va_arg