頭文件實(shí)例
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_lilacouyang_firstjni_JniMethod */
#ifndef _Included_com_lilacouyang_firstjni_JniMethod
#define _Included_com_lilacouyang_firstjni_JniMethod
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_lilacouyang_firstjni_JniMethod // Native方法的類名稱。
* Method: getNativeString // Native 方法名稱
* Signature: ()Ljava/lang/String; // 方法的標(biāo)識(shí),一個(gè)標(biāo)識(shí)符蹂窖,主要供在 JNI 操作 java對(duì)象的方法使用的。
// Signature一般是兩部分構(gòu)成恩敌,一個(gè)方法的參數(shù)瞬测,另一個(gè)是返回類型。
// 方法參數(shù)在括號(hào)里面纠炮,返回類型在后面
*/
JNIEXPORT jstring JNICALL Java_com_lilacouyang_firstjni_JniMethod_getNativeString
(JNIEnv *, jclass);
/*
* Class: com_nedu_jni_helloword_HeaderFile
* Method: doInt
* Signature: (DFZ[C)I
*/
JNIEXPORT jint JNICALL Java_com_nedu_jni_helloword_HeaderFile_doInt__DFZ_3C
(JNIEnv *, jclass, jdouble, jfloat, jboolean, jcharArray);
#ifdef __cplusplus
}
#endif
#endif
基本類型對(duì)應(yīng)關(guān)系
基本類型對(duì)應(yīng)關(guān)系
規(guī)則
- 方法參數(shù)或者返回值為java中的對(duì)象時(shí)月趟,必須以“L”加上其路徑,不過此路徑必須以“/”分開抗碰,自定義的對(duì)象也使用本規(guī)則狮斗,不在包中時(shí)直接“L”加上類名稱。
- 方法參數(shù)或者返回值為數(shù)組時(shí)類型前加上[,例如[I表示int[],[[[D表示 double[][][]弧蝇,即幾維數(shù)組就加幾個(gè)[碳褒。
- 方法組成分析:
JNIEXPORT jstring JNICALL Java_com_lilacouyang_firstjni_JniMethod_getNativeString
(JNIEnv *, jclass)
- JNIEXPORT 和 JNICALL:JNI 的關(guān)鍵字,表示此函數(shù)是要被 JNI 調(diào)用的看疗;
- jstring:方法的返回類型沙峻;
- Java:為 JNI 中標(biāo)識(shí)此方法來源于 java 的標(biāo)識(shí)頭;
- com_lilacouyang_firstjni_JniMethod_getNativeString:方法所在類的包名+類名+方法名
- (JNIEnv *, jclass):參數(shù)两芳,它們有一個(gè)共同的特點(diǎn)摔寨,包含 JNIEnv *――它是一個(gè)接口指針,
用于定位函數(shù)表中的函數(shù)怖辆!在 JNI 規(guī)范中一般稱 為 “Interface Pointer”是复。
JNI 中的操作過程是面向過程的!后面的jobject 是 一個(gè)指向該類的指針竖螃,
類似與 C 語言中的 this淑廊。這個(gè)第二個(gè)參數(shù)是變化的,當(dāng)該方法為類的實(shí)例方法時(shí)為 jobject特咆;
當(dāng)該方法為類方法(即靜態(tài)方法)時(shí)該參數(shù)為 jclass季惩,指向該類的 class。
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者