Для того, чтобы получить ссылку на Java метод, нужно знать его сигнатуру. Есть два способа:
1. Подобрать сигнатуру по таблице:
Сигнатура | Java тип |
---|---|
V | void |
Z | boolean |
B | byte |
C | char |
S | short |
I | int |
J | long |
F | float |
D | double |
L fully-qualified-class ; | fully-qualified-class |
[ type | type[] |
( arg-types ) ret-type | method type |
2. Получить сигнатуру через javap
%JAVA_HOME%/bin/javap -classpath "your.jar" -s com.myproject.YourClass
Пример:
Для метода:
public static void runTask(Runnable runnable) {
runnable.run();
}
Сигнатура будет: runTask(Ljava/lang/Runnable;)V — принимает объект класса java.lang.Runnable
и возвращает void.
Для встроенных классов (например android.os.Handler
) ищите .jar
в Android_SDK
.
Совет:
Для С++ удобнее использовать библиотеку jnipp вместо jni.h
P.S. Информации подобного рода в интернете — полно, писал исключительно для себя, чтобы каждый раз не искать.