ASM系列之二:Java类的基本表述
??? 上一篇文章中我们看到了如何使用ASM生成一个简单的JAVA类,里面使用到了很多的基本概念,比如:方法描述、引用描述等,下面将一一介绍。
一、类版本:
??? 一个Java二进制的类文件,都有一个版本,因此ASM中提供了几个常量来指定一个类的版,这些常量定义在org.objectweb.asm.Opcodes接口中,如下:
Java类型JVM中的描述booleanZcharCbyteBshortSintIfloatFlongJdoubleDObjectLjava/lang/Object;int[IObject[[Ljava/lang/Object;??? 在ASM中要获得一个类的JVM内部描述,可以使用org.objectweb.asm.Type类中的getDescriptor(final Class c)方法,如下:
方法描述,在类中的方法描述,在二进制文件中的void a(int i,float f)(IF)Vvoid a(Object o)(Ljava/lang/Object;)Vint a(int i,String s)(ILjava/lang/String;)Iint[] a(int[] i)([I)[IString a()()Ljava/lang/String;??? 获取一个方法的描述可以使用org.objectweb.asm.Type.getMethodDescriptor方法,如下: