2013-02-24 10 views
5

Tylko krótkie pytanie: we wszystkich przykładach, które widziałem w dokumentacji Androida, fragmenty są statycznymi klasami wewnętrznymi. Czy to jest wymaganie Androida? Czy mogą być ustawione jako regularne klasy wewnętrzne? Czy istnieje ktoś, kto rozumie, na czym polegają elementy wewnętrzne Androida, aby udzielić odpowiedzi?Fragmenty jako klasy statyczne

Z tego co przeczytałem w dokumentacji OCJP, te statyczne klasy wewnętrzne nie są w ogóle klasami, ale są tylko statycznymi elementami klasy, w której są zawarte, tak jak każda statyczna metoda - taka jak Główny.

Twoje spostrzeżenia są doceniane.

Odpowiedz

9

Czy jest to wymaganie Androida? Czy mogą być ustawione jako regularne klasy wewnętrzne?

Nie mogą to być zwykłe (niestatyczne) klasy wewnętrzne. Tylko instancja klasy zewnętrznej może utworzyć instancję zwykłej klasy wewnętrznej, a Android musi odtworzyć twoje fragmenty (na przykład w przypadku zmiany konfiguracji). Fragmenty muszą być zwykłymi klasami Java lub statycznymi klasami wewnętrznymi i muszą mieć publiczny konstruktor z zerowym argumentem.

te statyczne klasy wewnętrzne nie są w ogóle klasami, ale są tylko statycznymi elementami klasy, w której są zawarte, tak jak każda statyczna metoda - taka jak główna.

Nie mam pojęcia, jak doszło do tej interpretacji.

+0

Jest to zaczerpnięte z książki Sun Certified Programmer for JAVA 6 study guide, strona 681: "Klasa sama w sobie nie jest tak naprawdę statyczna, nie ma czegoś takiego jak klasa statyczna. Statyczny modyfikator w tym przypadku mówi, że zagnieżdżone klasa jest statycznym członkiem klasy zewnętrznej, co oznacza, że ​​można uzyskać do niej dostęp, tak jak w przypadku innych elementów statycznych, bez instancji klasy zewnętrznej ". Dotyczy to głównej metody, ponieważ jest statyczna. Ale twój komentarz pomaga. Dzięki. – user1837057

+3

@ user1837057: Nie zgadzam się z wyjaśnieniem z tego przewodnika. IMHO, wewnętrzne klasy statyczne są w zasadzie tylko cukrem syntaktycznym dla przestrzeni nazw - pod wieloma względami nie różnią się od zwykłych klas Java. – CommonsWare

Powiązane problemy