Javassist で実際のメソッドを持たないコンストラクタを作成しました
CtConstructor c = CtNewConstructor.make ( argTypes, null, newClass );
このクラスの署名を出そうとすると
c.getSignature();
私は得る
public Echo ()V
「V」の意味がわかりません。public Echo (); のいずれかを期待していました。または似たようなもの...
JVM はメソッド シグネチャを格納するコンパクトな方法を使用しますが、コンストラクタは特殊なケースと見なされます。
あなたの例:
()
引数を取らないメソッドを示しますV
何も返さないことを示しますスキームの他の部分は次のとおりです。
B
- バイトC
- 文字D
- ダブルF
- 浮くI
- 整数J
- 長いですS
- 短いV
- 空所Z
- ブール値[
- ブラケットに続くものの配列L
[クラス名] ;
- ドットがスラッシュに変わるこのクラスのインスタンス(
[引数] )
[戻り値の型] - メソッド シグネチャ例えば:
public int foo(String bar, long[][] baz)
になるだろう
(Ljava/言語/文字列;[[J)I
Sun^H^H^HOracle の Web サイトで仕様を参照してください。
「V」は結果タイプ「void」を決定します
型シグネチャの V は void 型を意味します。バイトコードは、コンストラクターを他のメソッドと区別しません (特別なメソッド名を使用する場合を除く)。