通过JNI在C中创建匿名Java类吗?

bbe*_*erg 4 java java-native-interface

给定一个Java接口,我想在本机C函数中创建实现该接口的匿名Java类的实例。我还希望该实例具有自己的内部状态,对java隐藏。JNI有可能发生这种情况吗?

Tre*_*man 5

尽管在JNI中直接实现一个匿名类非常困难,但是也许可以实现,因为JNI函数defineClass将字节的原始流作为类定义。如果您能够生成适当的类文件字节码,那么返回自定义生成的类(实现您选择的接口)似乎没有障碍(困难)。

尽管更简单的解决方法是让Java代码生成适当的Proxy实例,该实例采用委托给您的JNI代码的处理程序。代理能够实现任何接口,并将所有操作实现推迟到处理程序,然后再将其推迟到JNI进行实现。