Java 非打包对象的JNI签名

Java 非打包对象的JNI签名,java,java-native-interface,Java,Java Native Interface,根据该文件: name参数是完全限定的类名或数组类型 签名。例如,的完全限定类名 java.lang.String类是: “java/lang/String” 我的问题是一个Java新手的问题,没有打包的类的签名是什么?如果YourClass是默认包中的类,那么完全限定名就是YourClass 如果Java方法是 public void method(YourClass x); 然后,您可以通过以下方式搜索该方法: jmethodID m = (*env)->GetMethodID(en

根据该文件:

name参数是完全限定的类名或数组类型 签名。例如,的完全限定类名 java.lang.String类是: “java/lang/String”


我的问题是一个Java新手的问题,没有打包的类的签名是什么?

如果
YourClass
是默认包中的类,那么完全限定名就是
YourClass

如果Java方法是

public void method(YourClass x);
然后,您可以通过以下方式搜索该方法:

jmethodID m = (*env)->GetMethodID(env, javaclass, "method", "(LYourClass;)V");
工具
javah
可能会生成一个*.h文件,您可以在其中看到方法签名

完全限定名可以很容易地从java打印出来

System.out.println(instanceOfYourClass.getClass().getName());

如果
YourClass
是默认包中的类,那么完全限定名就是
YourClass

如果Java方法是

public void method(YourClass x);
然后,您可以通过以下方式搜索该方法:

jmethodID m = (*env)->GetMethodID(env, javaclass, "method", "(LYourClass;)V");
工具
javah
可能会生成一个*.h文件,您可以在其中看到方法签名

完全限定名可以很容易地从java打印出来

System.out.println(instanceOfYourClass.getClass().getName());

任何东西的JNI签名都与
javah
工具的输出一致。你不应该考虑自己去想一想。任何东西的JNI签名都是按照 java< /Cord>工具的输出。你不应该考虑自己想一想,谢谢。我有一大堆问题,它是用来从另一种类型的对象字段访问方法的,它有效吗?“V”是什么意思?我想我见过不同类型的签名(没有“V”和括号)其他web是否有其他或是旧版本JNI的签名?
(LYourClass;)V
是方法的签名,其中一个参数的类型为YourClass,返回void。另一个例子是
(B)I
-参数布尔返回int的it方法。请参见Ok,但我想访问对象的参数而不是方法,是否
jfieldID fid=(*env)->GetFieldID(env,myClass,“theField”,“LClassname”)后跟
jobject myObj=(*env)->GetObjectField(env,jobjectContainer,fid)有效?谢谢。我有一大堆问题,它是用来从另一种类型的对象字段访问方法的,它有效吗?“V”是什么意思?我想我见过不同类型的签名(没有“V”和括号)其他web是否有其他或是旧版本JNI的签名?
(LYourClass;)V
是方法的签名,其中一个参数的类型为YourClass,返回void。另一个例子是
(B)I
-参数布尔返回int的it方法。请参见Ok,但我想访问对象的参数而不是方法,是否
jfieldID fid=(*env)->GetFieldID(env,myClass,“theField”,“LClassname”)后跟
jobject myObj=(*env)->GetObjectField(env,jobjectContainer,fid)有效吗?