2010-10-29 11 views
7

W dużym skrócie, próbuję wykonać odwrotność "classObject.getDeclaredClasses()".Pobierz obiekt klasy zewnętrznej z obiektu klasy wewnętrznej.

Mam metodę, która otrzymuje obiekt typu Class<? extends Object>. Chcę dowiedzieć się, czy jest to klasa wewnętrzna, a jeśli tak, chcę uzyskać dostęp do instancji obiektu otaczającej klasy.

Czy istnieje inteligentne API dla tego, czy jestem zmuszony do manipulowania i analizowania ciągów?

Odpowiedz

20

Szukasz sposobu Class.getDeclaringClass():

publicznego Class getDeclaringClass()

Jeśli klasa lub interfejs reprezentowany przez obiekt klasy jest członkiem innej klasy, zwraca obiekt klasy reprezentujący klasa, w której została zadeklarowana. Ta metoda zwraca wartość null, jeśli ta klasa lub interfejs nie jest członkiem żadnej innej klasy. Jeśli ten obiekt klasy reprezentuje klasę tablicową, typ pierwotny lub nieważny, to ta metoda zwraca wartość null.

Powroty: deklarowana klasa dla tej klasy

+0

Ugh, czuję się głupio. Oczywiście, że tego szukam. Dzięki! –

1

odwoływania się zewnętrzna Klasa Instancja od wewnętrznej kod klasy

Jeżeli wewnętrzny kod klasy potrzebuje odniesienie do zewnętrznej instancji klasy, który jest dołączony do, używać nazwy zewnętrznej klasy, kropka, a to

* 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 

statyczne klasy wewnętrzne

Wewnętrzna klasa może być oznaczona jako statycznego

statyczna klasa wewnętrzna moich być instancja bez instancji zewnętrznej klasy

* 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 
Powiązane problemy