2012-03-28 44 views
15

私は、このクラスの署名クラス署名で "()V"とは何ですか?

c.getSignature(); 

を出ししようとしているとき、私は私が私が

public Echo()V 

を取得する本当の方法

CtConstructor c = CtNewConstructor.make (argTypes, null, newClass); 

を持っていないJavassistの持つコンストラクタを作成しました「V」は何を意味しているのですか?私はいずれかの公衆エコー();または類似のもの...

答えて

36

「ボイド」結果のタイプを決定します。ご例えば

は:

  • ()は、スキームの他の部分がある

  • Vが、それは何も返さないことを示している引数を取らない方法を示します。

    • B - バイト
    • C - char型
    • D - ダブル
    • F - 浮く
    • I - int型
    • J - 長い
    • S - ショート
    • V - 空
    • Z - ブール
    • [ - メソッドシグネチャ

    - ドットがスラッシュ

  • ( [引数] ) [戻り型]になってこのクラスのインスタンス、 - ブラケット
  • L [クラス名] ;次のものの配列たとえば:

    public int foo(String bar, long[][] baz) 
    

    0123になります

    日^ H^H^HOracleのウェブサイトでspec

  • +0

    はあなたが何を '^ H^H^H 'の一部の手段を教えていただけますか?を参照してください。 –

    +11

    それは冗談で不器用な試みでした。 http://en.wikipedia.org/wiki/Backspace#.5EH –

    +0

    を参照してください:)いいえ私はあなたが3つの文字の前にあるものを消去することを意味するのを知っています。リンクありがとう! :) –

    3

    Vはタイプシグネチャを意味します。バイトコードは、コンストラクタを他のメソッドと区別しません(特別なメソッド名を使用する以外)。

    3

    は、「V」は、JVMは、コンストラクタは特殊なケースであると考えられるそれらのメソッドのシグネチャを格納するコンパクトな方法を使用し

    関連する問題