java编译成字节码默认不保存方法参数信息,编译时需要设置java编译器保存设置,或者maven添加依赖,网上可搜索,仅支持java8。
现在主要探讨原理,保存参数名其字节码保存了属性信息里,反射可获取,未开启情况下,源码Parameter调用的方法为
public String getName() {
// Note: empty strings as paramete names are now outlawed.
// The .equals("") is for compatibility with current JVM
// behavior. It may be removed at some point.
if(name == null || name.equals(""))
return "arg" + index;//这便是获取arg0的原因
else
return name;
}```