簡體   English   中英

如何在本機 c++ jni 中實現 java 類型數組

[英]How to implement java typed array in native c++ jni

我有一個 java 中定義的 class 類型的數組。 我正在嘗試在本機 c++ JNI 中使用 class 類型的數組,並從它准備 c++ 包裹 ZA8CFDE6331BD59EB66AC96F8911C4。

下面是我在 java 中的 class 結構:

public class MyIdentifier implements Parcelable {

    private String abc;
    private String def;

    public MyIdentifier(String abc, String def) {
        this(abc, def);
    }
}

這就是我想從 c++ 調用的 java function

 public int setident(List<MyIdentifier> ident) throws RemoteException {
                Parcel _data = Parcel.obtain();
                Parcel _reply = Parcel.obtain();
                try {
                    _data.writeInterfaceToken(Stub.DESCRIPTOR);
                    _data.writeTypedList(ident);
                    this.mRemote.transact(169, _data, _reply, 0);
                    _reply.readException();
                    return _reply.readInt();
                } finally {
                    _reply.recycle();
                    _data.recycle();
                }
            }

最簡單的方法是從 C++ 調用Arrays.asList(javaList) 在這里,我假設您將array_of_MyIdentifier作為jobject

jobject array_of_MyIdentifier = ...;
jclass Arrays = env->FindClass("java/util/Arrays");
jmethodID Arrays_asList = env->GetStaticMethodID(Arrays, "asList", "([Ljava/lang/Object;)Ljava/util/List;");
jobject arrayList = env->CallStaticObjectMethod(Arrays, Arrays_asList, array_of_MyIdentifier);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM