💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
正如2.4节简要描述的那样,像Java_Prompt_getLine这样的原生函数实现,总是比Java函数声明中多出两个标准参数。 第一个参数,JNIEnv接口指针,指向一个地址,该地址包含了指向函数表的指针。这个函数表中的每个入口包含一个指向JNI函数的指针。原生方法通常通过其中的某个函数访问虚拟机中的数据结构。图3.1展示了JNIEnv接口指针。 ![](https://box.kancloud.cn/2016-02-24_56cd74cb10a49.png) 图3-1 JNIEnv接口指针 第二个参数则根据原生函数是否是静态函数而有所不同。如果该原生函数不是静态函数,则第二个参数对应着调用该原生函数的Java对象,这个有点像C++语言中的this指针。如果该原生函数是静态函数,则第二个参数对应着调用该原生函数的Java类。比如我们这里的示例,Java_Prompt_getLine函数,就是一个非静态函数,因此这里的jobject对象对应着发起调用的Prompt Java对象。