Pregunta

Veo esto en una traza de la pila:

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

¿Qué significa la "(I)L"significa?

¿Fue útil?

Solución

Esto significa que el método tiene un int, y vuelve myorg.pushemail.model.EmailContent

La cadena a partir de "L" a ";" es un descriptor de tipo, por el tipo de retorno. Las cosas entre paréntesis son los parámetros del método (en este caso, sólo hay una).

Estos descriptores de tipo se definen como parte de la Java Virtual Especificación de la Máquina, en sección 4.3.2 . href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.3.2-200" Tabla 4.3-A muestra todos los códigos utilizados. Cuando se compila una clase, los descriptores de esta forma se utilizan para especificar la firma de los métodos y los tipos de campos y variables.

En la serialización Java, descriptores de método son parte de la información que se hash a formar el defecto serialVersionUID para una clase Serializable.

En RMI, los descriptores de método son ordenadas, y el resultado se utiliza para identificar qué método se invoca en la interfaz remota.

Otros consejos

Es una forma de nombre de destrozarlo se utiliza para la desambiguación de sobrecargas de método.El nombre del método es anexado por una serie de caracteres que describen los parámetros y el tipo de devolución:los parámetros aparecen de forma secuencial dentro de los paréntesis, y el tipo de retorno de la siguiente manera el paréntesis de cierre.Los códigos son como sigue:

  • Z: boolean
  • B: byte
  • C: char
  • S: short
  • I: int
  • J: long
  • F: float
  • D: double
  • Lcompleto-nombre de clase ; :de clase completo
  • [ tipo de :matriz de tipo de
  • V: void

Así que, en su caso, la (I)Lmyorg/pushemail/model/EmailContent; el método toma un argumento de tipo int y devuelve un objeto de tipo myorg.pushemail.model.EmailContent.

Es un punto menor, pero no creo que esto es renombrado de nombres. Nombre mangling implica la adición de material extra a un nombre. ZBC etc es lo codifica firmas de método Java en archivos de clase. En lugar de escribir booleano, le pusieron un Z. Se ahorra espacio.

Según wikipedia (aplica disclaimer estándar), el único nombre mangling en java implica clases internas y JNI.

Se dice que no hay un método en la clase myorg.vignettemodules.customregistration.NewsCategoryVAPDAO llamada getEmailContentByID que acepte int argumentos [denotados por (I)] y devuelve un objeto (anunciado por L) llamada myorg/pushemail/model/EmailContent (cerrado por ' ; ').

El carácter L y se utiliza para significar un nombre de clase y número entero en especificación de la clase interna de Java.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top