GetMethodID
jmethodID GetMethodID(JNIEnv *env, jclass clazz, const char *name, const char *sig);
Returns the method ID for an instance (nonstatic) method of a class or interface. The method may be defined in one of the
clazz’s superclasses and inherited by clazz. The method is determined by its name and signature.GetMethodID() causes an uninitialized class to be initialized.
To obtain the method ID of a constructor, supply
<init> as the method name and void (V) as the return type.LINKAGE:
Index 33 in the JNIEnv interface function table.
PARAMETERS of GetMethodID
env: the JNI interface pointer.clazz: a Java class object.name: the method name in a 0-terminated modified UTF-8 string.sig: the method signature in 0-terminated modified UTF-8 string.RETURNS of GetMethodID
Returns a method ID, or
NULL if the specified method cannot be found.THROWS:
NoSuchMethodError: if the specified method cannot be found.ExceptionInInitializerError: if the class initializer fails due to an exception.OutOfMemoryError: if the system runs out of memory.
Example - GetMethodID
JNIEXPORT jint JNICALL
Java_COM_novell_nsi_libsWrapper_BinderyJNI_NWScanObject /* modified for example */
(
JNIEnv *env,
jclass obj,
jobject objName, // out, optional, StringBuffer
)
{
nstr8 cObjectName [MAX_BINDERY_OBJECT_NAME_LEN];
jstring javaString;
jclass cls;
jmethodID mid;
.
.
.
Some code to get cObjectName
javaString = (jstring)(*env)->NewStringUTF(env, (const char *)cObjectName);
cls = (*env)->GetObjectClass(env, objName);
mid = (*env)->GetMethodID(env, cls, "append","(Ljava/lang/String;)Ljava/lang/StringBuffer;");
if (0 == mid)
{
printf("GetMethodID returned 0\n");
return(-1);
}
(*env)->CallObjectMethod(env, objName, mid, javaString);