http://blog.houzhi.me/2016/03/19/java-signature-reflect-jni
在这段时间写东西,必须要先吐槽一下找实习的杯具。找个实习不容易,没经验,各种跪。
一直都觉得在Java反射中,那些反射的方法调用都很有规律,每一个调用都需要相同的特性:函数对象(Method),函数参数,类对象。今天坐在电脑前又回忆了JNI的调用方式(C++调用Java),也需要相同的内容:函数ID(jmethodID),参数,类对象(jobject),JNIEnv。仔细一比较,其实两者就是一样的,都是Java方法签名。
记得刚学Java的时候,也有特别将Java方法签名,那时候就基本是记下了,但是根本没想到Java方法签名意味着什么,现在终于是能深切体会一些了。这个签名就表示了Java方法,相当于它的ID,适用于Java整个环境,能够通过指定这些内容,形容一次函数调用。我们平时采用普通方式调用Java函数,其实也就是先描述了函数,参数,类对象。其实在Java层,我觉得可以理解为隐含了一个线程描述(JVM)。在native里面,就有个JNIEnv(线程本地变量)描述一个Java虚拟机环境。至于到了java的.class文件里面也是一样的包含了这些标志。下面是截取了一段Constant poll中的内容&#