从 Java 本机方法返回对象

Jan*_*der 5 c++ java java-native-interface

我想通过本机 java 接口调用一个方法,该接口返回一个对象。

这是我的本地方法

public native Node getProjectionPoint(double lat, double lon);  
Run Code Online (Sandbox Code Playgroud)

节点类

 public class Node {        
    private String id;
    private double latitude;
    private double longitude;
}
Run Code Online (Sandbox Code Playgroud)

C头文件

JNIEXPORT jobject JNICALL Java_org_smartcar_serverdatainterface_shared_services_CppConnector_getProjectionPoint (JNIEnv *env, jobject obj, jdouble lat, jdouble lon);
Run Code Online (Sandbox Code Playgroud)

我如何创建一个对象并将其返回给java?

Jan*_*der 6

我解决了问题

JNIEXPORT jobject JNICALL Java_org_smartcar_serverdatainterface_shared_services_CppConnector_getProjectionPoint
  (JNIEnv *env, jobject obj, jdouble lat, jdouble lon)
{
    jclass class = (*env)->FindClass(env,"org/smartcar/serverdatainterface/shared/businessentities/Node");

    if (NULL == class)
        PrintError ("class");

    jmethodID cid = (*env)->GetMethodID(env,class, "<init>", "(DD)V");

   if (NULL == cid)
       PrintError ("method");

   return (*env)->NewObject(env, class, cid, lat, lon);
}
Run Code Online (Sandbox Code Playgroud)

这完美地工作