Search code examples
scalajava-native-interface

How to extract a value from Option[Double] in JNI?


I'm able to extract jobject from Option[Double] using get() method:

jmethodID getMethodID = env->GetMethodID(optionClass, "get", "()Ljava/lang/Object;");
jobject volObj = env->CallObjectMethod(pointObj, getMethodID);

However, I don't see a way to extract the actual Double value from Option. How to do that?


Solution

  • you can call Double.doubleValue() to unbox the object to double.

    jclass doubleClass = (*env)->FindClass(env, "java/lang/Double");
    jmethodID doubleMethod =
        (*env)->GetMethodID(env, doubleClass, "doubleValue", "()D");
    jdouble d = (*env)->CallDoubleMethod(env, valObj, doubleMethod);