我试图从C ++代码调用java方法,因为我正在使用JNI,我能够调用java方法但是在调用期间我想在c ++中使用BigDecimal,你能帮我使用BigDecimal(如何在C ++代码中声明和初始化。
答案 0 :(得分:4)
BigDecimal
只是本机部分的java对象
所以首先你需要创建它。因此,您需要一个类和一个方法ID。
jclass cls = (*env)->FindClass(env, "java/math/BigDecimal");
jmethodID = mid = (*env)->GetMethodID(env, cls, "<init>", "(D)V");
这将是BigDecimal
的双重构造者
在此之后,您可以创建两个对象。
jobject bd1 = (*env)->NewObject(env,cls, mid, 1.222);
jobject bd2 = (*env)->NewObject(env,cls, mid, 0.0500);
现在您有两个BigDecimal
,您可以将一个添加到另一个
首先,您需要再次使用add
methodID。
jmethodID mid2 = (*env)->GetMethodID(env, cls, "add", "(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;");
然后你可以打电话。
jobject sum = (*env)->CallObjectMethod(env,bd1,mid2,bd2);
现在你有前两个BigDecimal
的总和。要打印出来,您可以使用doubleValue()
功能。