案例四:回調實例方法與靜態方法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回調方法已被正確調用