一二中的概念如图展示:
package com.study.method;
public class TestClass {
private int x;
public int addResult() {
return x+1;
}
}
一、简单名称
没有类型和参数修饰的方法或字段名称
比如整形变量x和方法addResult。
二、全限定名
一个类的全限定名是将类全名的.全部替换为/
例如com/study/method/TestClass
三、描述符
如下图,这里贴上官方文档:
https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html
以上来自简书https://www.jianshu.com/p/8b33361a5a3f
四、方法句柄和方法类型
Java7中为间接调用方法引入了新的api,即 方法句柄。
方法句柄中包含两个重要的类,MethodHandle和MethodType.
MethodType用来描述方法的返回值类型以及入参类型。
MehodHandle包含一个指向Method对象(方法在jvm内部的对等体)的指针。
而MehodHandle对象有2个重要方法invoke和invokeExact.
invokeExtract要求更加精确
MethodHandle获得的方法引用,并不能 突破访问权限本身的限制,比如private方法,就不能在类外被使用,这一点不如反射。
通过句柄调用方法示例(来源:https://blog.csdn.net/wulianzhazha/article/details/78815647):
public class TestUtil {
public static void main(String[] args) throws Throwable{
//声明定义方法的签名,参数为返回值类型、参数类型
MethodType methodType = MethodType.methodType(void.