![](/img/trans.png)
[英]How to implement observer pattern in C++, calling Java method in JNI
[英]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.