pequeña duda en método de la clase AbstractList

tiroxino
23 de Abril del 2006
Hola, viendo la implementación de la interfaz List dada por la clase AbstractList me he encontrado con algo que me ha desconcertado un poco (hace tiempo que no programaba en Java). Dentro de la clase se hace uso de un método get y éste se llama sin usar un objeto, ni "this" ni "super". ¿por qué esto? ¿Era porque se llama a un método definido en la misma clase?

Código:

public Object next() {
checkForComodification();
try {
Object next = get(cursor);
lastRet = cursor++;
return next;
} catch(
IndexOutOfBoundsException e) {
checkForComodification();
throw new NoSuchElementException();
}
}


Diego
23 de Abril del 2006
¿por qué ha de hacerse una referencia a this? El this está implícito en cada llamada a un método dentro de la misma clase, y sólo ha de ponerse por claridad, cuando un parámetro tiene el mismo nombre que una propiedad de la clase, o cuando un constructor llama a otro de la misma clase, usualmente en los métodos get no se hace uso del mismo:

public E getPropiedad(){
return propiedad;
}

tiroxino
23 de Abril del 2006
Claro, la cuestión es que llamo al método "get" desde una clase interna y este método "get" está implementado en una clase padre ArrayList.
La jerarquía es :

ArrayList <--- ArrayListExtra (la cual contiene a la clase interna X)

Si en la clase interna X llamo a "get", se usa el de la clase ArrayList. Pero si pongo "this.get(cursor)", no funciona porque "get" no está definido en la misma clase X, no? Pero no entiendo por qué no se le puede hacer un casting de la forma:
((ArrayList)this).get(cursor)

¿o es que desde una clase interna no se puede hacer casting a clases padres? ¿ni usar "super"?

Me falta manejo con lo de las clases internas...

Gracias :)