mah*_*nya 6 java reflection bytecode java-bytecode-asm
我正在使用ASM(字节码修改库),它以字节码命名格式提供对类型名称的访问,例如,报告String字段具有描述:Ljava/lang/String
我需要为某些类调用Class.forName,但是我需要类型名称的源代码形式,例如java.lang.String.
有没有办法从内部名称转换为Java源格式?
我不知道任何API方法,但转换非常简单.您可以在此处查找JVM规范中的详细信息.原始类型由一个字符表示:
B =字节
C = char
D = double
F = float
I = int
J = long
S = short
Z = boolean
类和接口类型由完全限定名称表示,带有"L"前缀和";" 后缀.圆点'.' 在完全限定的类名中用'/'替换(对于内部类,'.'将外部类名与内部类名分开,用'$'代替).所以String类的内部名称是"Ljava/lang/String;" 并且内部类"java.awt.geom.Arc2D.Float"的内部名称将是"Ljava/awt/geom/Arc2D $ Float;".
数组名称以左括号'['开头,后跟组件类型名称(基元或引用).因此"int []"变为"[I"和"javax.swing.JFrame [] []"变为"[[Ljavax.swing.JFrame;".
| 归档时间: |
|
| 查看次数: |
5093 次 |
| 最近记录: |