2010-10-29 19 views
7

En pocas palabras, estoy intentando hacer lo contrario de "classObject.getDeclaredClasses()".Obtiene el objeto de clase externo de un objeto de clase interna

Tengo un método que recibe un objeto del tipo Class<? extends Object>. Quiero saber si es una clase interna, y si lo es, quiero acceder a la instancia de objeto de la clase circundante.

¿Existe una API inteligente para esto o me veo obligado a hacer algo de manipulación y análisis de cadenas?

Respuesta

20

Usted está buscando el método Class.getDeclaringClass():

Clase getDeclaringClass pública()

Si la clase o interfaz que representa este objeto Class es un miembro de otra clase, devuelve el objeto Class que representa la clase en la que se declaró . Este método devuelve null si esta clase o interfaz no es un miembro de cualquier otra clase. Si este objeto de Clase representa una clase de matriz, un tipo primitivo, o nulo, entonces este método devuelve nulo.

Devuelve: la clase que declara para esta clase

+0

Uf, me siento estúpida. Por supuesto que estoy buscando esto. ¡Gracias! –

1

Tomando como referencia la Clase Instancia externo del Código clase interna

Si el código de clase interna necesita una referencia a la instancia de la clase externa que se une a, utilizar el nombre de la clase externa, un punto, y esta

* remember that if there is no name conflict, there is no need for any special syntax 
* for code in MyInner to obtain a reference to its MyOuter: 

    MyOuter.this 

las clases internas estáticas

Una clase interna se puede marcar como estática

Una clase interna estática Mi crear una instancia sin una instancia de la clase externa

* static members of the outer class are visible to the inner class, no matter what their access level 
* non-static members of the outer class are not available, since there is not instance of the outer class to retrieve them from 
Cuestiones relacionadas