11

私はこれをスタックトレースで見ます:

myorg.vignettemodules.customregistration.NewsCategoryVAPDAO.getEmailContentByID(I)Lmyorg / pushemail / model / EmailContent;

(I)L」とはどういう意味ですか?

4

4 に答える 4

20

これは、メソッドのオーバーロードを明確にするために使用される名前マングリングの形式です。メソッド名には、パラメーターと戻り値の型を説明する一連の文字が追加されます。パラメーターは括弧内に順番に表示され、閉じ括弧の後に戻り値の型が続きます。コードは次のとおりです。

  • Z:boolean
  • B:byte
  • C:char
  • S:short
  • I:int
  • J:long
  • F:float
  • D:double
  • L完全修飾クラス名 ;: 完全修飾クラス
  • [ type :タイプの配列
  • V:void

したがって、あなたの場合、(I)Lmyorg/pushemail/model/EmailContent;メソッドは type の引数を1つ取り、 typeintのオブジェクトを返すことを意味しますmyorg.pushemail.model.EmailContent

于 2008-12-10T19:59:38.160 に答える
16

これは、メソッドがを取りint、を返すことを意味しますmyorg.pushemail.model.EmailContent

「L」から「;」までの文字列 は、戻り型の1つの型記述子です。括弧内のものはメソッドパラメーターです(この場合、1つだけです)。

これらのタイプ記述子は、セクション4.3.2のJava仮想マシン仕様の一部として定義されています。表4.3-Aは、使用されるすべてのコードを示しています。クラスがコンパイルされるとき、この形式の記述子は、メソッドのシグニチャーとフィールドおよび変数のタイプを指定するために使用されます。

Javaシリアル化では、メソッド記述子は、クラスのデフォルトを形成するためにハッシュされる情報の一部です。serialVersionUIDSerializable

RMIでは、メソッド記述子がハッシュされ、その結果を使用して、リモートインターフェイスで呼び出されているメソッドを識別します。

于 2008-12-10T19:51:03.607 に答える
0

些細な点ですが、これは名前のマングリングではないと思います。名前マングリングは、名前に余分なものを追加することを意味します。ZBC などは、Java がクラス ファイル内のメソッド シグネチャをエンコードする方法です。ブール値を書く代わりに、Z を入れます。スペースを節約します。

ウィキペディア (標準の免責事項が適用されます) によると、Java での唯一の名前マングリングには、内部クラスと JNI が含まれます。

于 2010-04-01T10:11:09.190 に答える
0

それは、引数 [(I) で示される]を受け取り、呼び出された (';' で閉じられた ) オブジェクト (L で発表) を返すメソッドがmyorg.vignettemodules.customregistration.NewsCategoryVAPDAO呼び出されたクラスにないことを示しています。getEmailContentByIDintmyorg/pushemail/model/EmailContent

L および I 文字は、Java の内部クラス仕様でクラス名と整数を表すために使用されます。

于 2016-01-13T07:29:16.277 に答える