如何使用JNI实例化Java泛型?

rid*_*rid 7 java generics java-native-interface

如果我想实例化一个Date,我可以使用:

jclass cls = (*env)->FindClass(env, "java/util/Date");
jmethodID ctr = (*env)->GetMethodID(env, cls, "<init>", "()V");
jobject obj = (*env)->NewObject(env, cls, ctr);
Run Code Online (Sandbox Code Playgroud)

但是我如何实例化ArrayList<String>

Chr*_*sch 10

以同样的方式.在VM级别,没有泛型.

  • 这对于如何实际做到这一点并没有多大帮助,因为你可以!只是泛型被删除了。`env-&gt;GetMethodID(env-&gt;FindClass("java/util/ArrayList"), "add", "(Ljava/lang/Object;)Z");` (2认同)

Zac*_*ach 6

@noise是对的.泛型用于确保类型安全.编译时,编译器会"输入擦除".查看有关类型擦除的更详细说明:类型擦除