#include#include//获取字符..." />
当前位置:问百问>百科问答>在JNI中如何将jobject类型转换为jdouble类型

在JNI中如何将jobject类型转换为jdouble类型

2024-09-29 18:24:14 编辑:zane 浏览量:547

在JNI中如何将jobject类型转换为jdouble类型

的有关信息介绍如下:

在JNI中如何将jobject类型转换为jdouble类型

#include    #include "com_test_Test.h"  #include    #include    #include      //获取字符串   JNIEXPORT void JNICALL Java_com_test_Test_sayHello(JNIEnv * env, jobject obj,     jstring s) {      char * str = (char *) (*env)->GetStringUTFChars(env, s, 0);    printf("\n c-string: hello - %s", str);     }     //获取,返回int   JNIEXPORT jint JNICALL Java_com_test_Test_add(JNIEnv * env, jobject obj,     jint a, jint b) {    int i = a;    int j = b;    printf("\n c-int: %d - %d", i, j);    char str[256];    sprintf(str, "%d", i + j);    return (jint) i + j;   }     //获取,返回float   JNIEXPORT jfloat JNICALL Java_com_test_Test_getFloat(JNIEnv * env, jobject obj,     jfloat f) {    float fl = f;    printf("\n c-float: %3f", fl);      fl = 200.555;    return (jfloat) fl;   }     //获取,返回 double   JNIEXPORT jdouble JNICALL Java_com_test_Test_getDouble(JNIEnv * env,     jobject obj, jdouble dou) {    double d = dou;    printf("\n c-double: %3f", d);      d = 800.88;    return (jdouble) d;   }     //获取,返回boolean   JNIEXPORT jboolean JNICALL Java_com_test_Test_getBoolean(JNIEnv * env,     jobject obj, jboolean bool) {      unsigned char b = bool;    printf("\n c-boolean: %lu  ", b);    if (b) {     printf("true");    } else {     printf("false");    }      b = 1;    return (jboolean) b;   }     //获取,返回 string   JNIEXPORT jstring JNICALL Java_com_test_Test_getString(JNIEnv * env,     jobject obj, jstring s) {    char * st = (char *) (*env)->GetStringUTFChars(env, s, 0);    printf("\n c-string:  %s", st);      char * str = "hello wang wu!";    jstring rtn;    rtn = (*env)->NewStringUTF(env, str);    return rtn;   }     //获取,返回 string []   JNIEXPORT jobjectArray JNICALL Java_com_test_Test_getStringArray(JNIEnv * env,     jobject obj, jobjectArray arr) {    int len = (*env)->GetArrayLength(env, arr);    printf("\n c-stringArray :");    int i = 0;    for (i = 0; i < len; i++) {     jobject obj = (*env)->GetObjectArrayElement(env, arr, i);     jstring str = (jstring) obj;     const char * szStr = (*env)->GetStringUTFChars(env, str, 0);     printf(" %d-%s ", i, szStr);     (*env)->ReleaseStringChars(env, str, szStr);    }    //-----返回----      jstring str;    jobjectArray args = 0;    jsize size = 5;    char* sa[] = { "Hello,", "world!", "zhang", "san", "yuang" };    int j = 0;    jclass objClass = (*env)->FindClass(env, "java/lang/String");    args = (*env)->NewObjectArray(env, size, objClass, 0);    for (j = 0; j < size; j++) {     str = (*env)->NewStringUTF(env, sa[j]);     (*env)->SetObjectArrayElement(env, args, j, str);    }    return args;   }     -----------------------------------------------------------------     下面是Test.java     package com.test;     public class Test {    private native void sayHello(String str);      private native int add(int a, int b);      private native float getFloat(float f);      private native double getDouble(double d);      private native boolean getBoolean(boolean b);      private native String getString(String str);      private native String[] getStringArray(String[] sa);      static {     System.loadLibrary("Test");    }      public static void main(String[] args) {     Test test = new Test();     test.sayHello("zhang san");     System.out.println("int     --> " + test.add(10, 20));     System.out.println("float   --> " + test.getFloat((float) 20.123));     System.out.println("double  --> " + test.getDouble(100.369));     System.out.println("boolean --> " + test.getBoolean(true));     System.out.println("string  --> " + test.getString("wang Wu"));       String[] ss = { "hello", "-", "zhang", "san" };     Object[] obj = test.getStringArray(ss);     System.out.print("string[]-->  ");     for (Object object : obj) {      System.out.print(object + " ");     }      }     }

版权声明:文章由 问百问 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.wenbwen.com/answer/169096.html