这在堆栈跟踪中意味着什么?

bpa*_*apa 11 java exception stack-trace

我在堆栈跟踪中看到了这一点:

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

" (I)L"是什么意思?

Ada*_*eld 20

它是一种名称修改形式,用于消除方法重载的歧义.方法名称附加了一系列描述参数和返回类型的字符:参数在括号内依次出现,返回类型在右括号后面.代码如下:

  • Z: boolean
  • B: byte
  • C: char
  • S: short
  • I: int
  • J: long
  • F: float
  • D: double
  • L完全限定类名 ;:完全限定类
  • [ 类型:数组类型
  • V: void

因此,在您的情况下,(I)Lmyorg/pushemail/model/EmailContent;意味着该方法接受一个类型的参数int并返回一个类型的对象myorg.pushemail.model.EmailContent.


eri*_*son 16

这意味着该方法采用int,并返回myorg.pushemail.model.EmailContent

从"L"到";"的字符串 是返回类型的一种类型描述符.括号内的东西是方法参数(在这种情况下,只有一个).

这些类型描述符在4.3.2节中定义为Java虚拟机规范的一部分.表4.3-A显示了所有使用的代码.编译类时,此表单的描述符用于指定方法的签名以及字段和变量的类型.

在Java序列,方法描述符的该被散列到的信息的一部分形成所述默认serialVersionUID为一个Serializable类.

在RMI中,方法描述符被散列,结果用于标识远程接口中调用的方法.