asmでみかけるIとかVとかをちょこっとまとめ。
メソッドの引数などでみかけるの、プリミティブ型は他にもあるはず
追記:2013/03/15
ASMのFAQのとこにそれに関する記述がありました
ASM - ASM FAQ 7. How do method descriptors work?
文字 | 型 |
---|---|
V | void |
Z | boolean |
C | char |
B | byte |
S | short |
I | int |
F | float |
J | long |
D | double |
[I | int[] |
[[Ljava/lang/Object; | Object[ ][ ] |
メソッドを例にちょっと訳
void foo(String str, int i)
というメソッドがあるとします、これをバイトコード(?)であらわすと
(Ljava/lang/String;I)V
となり、asmでMethodNodeのnameには"foo"、descには"(Ljava/lang/String;I)V"が入ります。
他にコンストラクタを例にすると
public Foo(float f, boolean flag)
が
C(FZ)V
となり、asmでMethodNodeのnameには"<init>"(半角だと非表示されちゃう・・・)、descには"(FZ)V"が入ります。
コンストラクタは"V"なんですね。
とりあえずいろんなNodeをSystem.out.println()したりしてどういうのが入ってるかを確認していくなり、バイトコード表をみつつクラスファイルをバイナリエディタで確認するなりしてるとなんとなくわかるんじゃないかと思います。
日本語の資料少なめなので英文読むなりjavadoc読むなりで頑張りましょうね。
前も言った気がする。