Los tipos de matriz son especiales en Java. Este es un extracto de JLS 10.7 Array Members
Los miembros de un tipo de matriz son todos de los siguientes:
- El
public final
campo length
, que contiene el número de componentes de la matriz (longitud puede ser positivo o cero).
- El
public
método clone
, que anula el método del mismo nombre en la clase Object
y no arroja excepciones marcadas. El tipo de devolución del método de clonación de un tipo de matriz T[]
es T[]
.
- Todos los miembros heredados de la clase Objeto; el único método de Object que no se hereda es su método
clone
.
A pesar de esto, todavía hay errores vieja data cuando se está utilizando la reflexión sobre matrices: ni length
ni clone
se puede conocer a través de la reflexión (bug# 5047859, bug# 4987375).
Ninguno de los miembros se hereda de la forma tradicional de cualquier superclase; todos los tipos de matriz se extienden desde Object
directamente. Este "tratamiento especial" es probable por qué existen estos errores en primer lugar.
"¿significa esto que nunca se podrá ver la variable de longitud que se define?"
No hay un código fuente real para los tipos de matriz. De nuevo, estos tipos son especiales; la JVM simplemente saca estos tipos de un sombrero cada vez que se requieren. No verá un archivo de origen .java
para la matriz tipo int[].class
(es decir, el tipo de todas las matrices int
).
tanto, no, usted no será capaz de ver la length
campo definido.
Para leer más, aquí información sobre Java Reflection:
¿Estamos hablando de longitud de cadena, longitud de matriz, tamaño de objeto, o qué? –
@Jason: Creo que está hablando de los arreglos. – missingfaktor
@Jason, creo que está hablando de array.length, String no tiene una variable de longitud, tiene el método de longitud() (que es confuso ya que no es getLength()). – medopal