【詳解】JNI (Java Native Interface) (四)

案例四:回調實例方法與靜態方法html

描述:此案例將經過Java調用的C語言代碼回調Java方法。java

要想調用實例對象的方法,須要進行如下步驟:工具

1. 經過對象實例,獲取到對象類的引用  => GetObjectClass()spa

2. 經過類引用,獲取到方法ID  => GetMethodID() 3d

 須要提供方法名,和方法簽名。也就是須要這兩個信息來標識肯定一個方法。htm

   方法簽名格式:參數列表返回值類型。 對象

 例如: ()V或(Ljava/lang/String;)V等等。這裏的所說的類型表示與案例三相同blog

    你能夠經過javap命令工具,查看方法的簽名。例如,如下是下面例子的方法簽名(描述)。get

 

3. 基於方法ID,你能夠根據返回值類型,調用Call<基本類型>Method()或者CallVoidMethod()或CallObjectMethod(),來調用對應的方法。編譯

本例全部生成的文件以下:

 

(一)編寫Java代碼

 

(二)編譯Java代碼,並生成頭文件

(3)編寫C代碼實現

(4)編譯C代碼生成動態連接庫,libdemo4.so

(5)執行Java代碼

由此,可知Java回調方法已被正確調用

 

相關文章
相關標籤/搜索