2010-10-29 16 views
7

In breve, sto cercando di eseguire l'inverso di "classObject.getDeclaredClasses()".Ottieni l'oggetto classe esterna da un oggetto di classe interna

Ho un metodo che riceve un oggetto di tipo Class<? extends Object>. Voglio capire se si tratta di una classe interna, e se lo è, voglio accedere all'istanza dell'oggetto della classe circostante.

Esiste un'API intelligente per questo oppure sono obbligato a eseguire alcune operazioni di stringa e analisi?

risposta

20

Stai cercando il metodo Class.getDeclaringClass():

pubblico Classe getDeclaringClass()

Se la classe o interfaccia rappresentata dall'oggetto classe è un membro della un'altra classe, restituisce l'oggetto di classe che rappresenta la classe in cui è stato dichiarato . Questo metodo restituisce null se questa classe o interfaccia non è un membro di un'altra classe. Se questo oggetto Class rappresenta una classe array, un tipo primitivo, o vuoto, questo metodo restituisce null.

Restituisce: la classe che dichiara per questa classe

+0

Ugh, mi sento stupido. Certo che lo sto cercando. Grazie! –

1

Riferimento Outer Classe Istanza dall'interno Codice Classe

Se il codice della classe interna ha bisogno di un riferimento all'istanza classe esterna che è collegata, utilizzare il nome della classe esterna, un punto, e questo

* 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 

classi statiche interne

una classe interna può essere contrassegnato come statico

Una classe interna statica mio essere istanziata senza un'istanza della classe esterna

* 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 
Problemi correlati