2010-10-29 7 views
7

En résumé, j'essaie de faire l'inverse de "classObject.getDeclaredClasses()". J'ai une méthode qui reçoit un objet de type Class<? extends Object>. Je veux savoir si c'est une classe interne, et si c'est le cas, je veux accéder à l'instance d'objet de la classe environnante.Récupère l'objet de classe externe à partir d'un objet de classe interne

Existe-t-il une API intelligente pour cela, ou suis-je obligé de faire de la manipulation de chaînes et de l'analyse syntaxique?

Répondre

20

Vous recherchez la méthode Class.getDeclaringClass():

classe getDeclaringClass publique()

Si la classe ou de l'interface représentée par cet objet de classe est membre de une autre classe, retourne l'objet de classe représentant la classe dans laquelle il a été déclaré . Cette méthode renvoie null si cette classe ou cette interface n'est pas un membre d'une autre classe. Si cet objet Class représente une classe de tableau, un type primitif, ou void, alors cette méthode renvoie null.

Renvoie: la classe déclarant pour cette classe

+0

Ugh, je me sens stupide. Bien sûr que je cherche ça. Merci! –

1

Référencer la classe externe Instance De Code classe interne

Si le code de classe interne a besoin d'une référence à l'instance de la classe externe qu'il est attaché à, utiliser le nom de la classe externe, un point, et ce

* 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 

statiques classes internes

Une classe interne peut être marqué comme statique

Une classe interne statique mon être instancié sans une instance de la classe externe

* 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