使用asm如何显式声明可变参数
With asm how to explicitly declare a variable parameter
对于一个方法:
String invoke(Object... args)
当我使用 asm ClassVisitor 读取这个方法时,我看到:
([Ljava/lang/Object;)Ljava/lang/String;
是的,参数args变成了对象数组,也就是说:可变参数是数组的语法糖。
但是当我使用 javap 显示字节码时:
public java.lang.String invoke(java.lang.Object...);
我很困惑为什么 javap 知道 args 是变量 Object...,而不是数组类型 Object[]
答案:
方法访问标志:ACC_VARARGS
方法访问标志:ACC_VARARGS
对于一个方法:
String invoke(Object... args)
当我使用 asm ClassVisitor 读取这个方法时,我看到:
([Ljava/lang/Object;)Ljava/lang/String;
是的,参数args变成了对象数组,也就是说:可变参数是数组的语法糖。
但是当我使用 javap 显示字节码时:
public java.lang.String invoke(java.lang.Object...);
我很困惑为什么 javap 知道 args 是变量 Object...,而不是数组类型 Object[]
答案:
方法访问标志:ACC_VARARGS
方法访问标志:ACC_VARARGS