- 编译生成参数表
- 编译生成调试信息
javac .\Bean2.java 没有参数名
Javap -c -v .\Bea2.class 反编译
javac -parameters .\Bean2.java 编译有有参数名 MethodParameters
javac -g .\Bean2.java 编译有有参数名 LocalVariableTable
对于
MethodParameters可以通过反射获取到对于
LocalVariableTable反射无法获取
新建Bean2.java 文件【接口】
package com.a22;
public interface Bean2 {
public void foo(String name, int age);
}
Bean2.java 编译后,失去参数javac .\Bean2.java

-parameters 编译后有参数javac -parameters .\Bean2.java

-g 编译后有参数只有编译的 类才有参数
LocalVariableTable

为了能引用到a22.com.a22 中的文件
添加之后才可以引用

通过反射是无法获取 -g 编译时【LocalVariableTable】的参数名字

LocalVariableTable中参数
ParameterNameDiscoverer的一个实现
public static void main(String[] args) throws NoSuchMethodException {
System.out.println("----test");
Method foo = Bean1.class.getMethod("foo", String.class, int.class);
// 2. 基于 LocalVariableTable 本地变量表
LocalVariableTableParameterNameDiscoverer discoverer = new LocalVariableTableParameterNameDiscoverer();
String[] parameterNames = discoverer.getParameterNames(foo);
System.out.println(Arrays.toString(parameterNames));
}
DefaultParameterNameDiscoverer——接口ParameterNameDiscoverer的另外一种实现,两种获取参数的方式都支持