2013-02-24 16 views
5

Nur eine kurze Frage: In allen Beispielen, die ich in der Android-Dokumentation gesehen habe, sind Fragmente statische innere Klassen. Ist das eine Anforderung von Android? Oder können sie als normale innere Klassen eingerichtet werden? Gibt es jemanden da draußen, der die Interna von Android genug versteht, um eine Antwort zu geben?Fragmente als statische Klassen

Aus was ich in der OCJP-Dokumentation gelesen habe, sind diese statischen inneren Klassen überhaupt keine Klassen, sondern nur statische Mitglieder der Klasse, in der sie enthalten sind, genau wie jede statische Methode - wie Main.

Ihre Erkenntnisse werden geschätzt.

Antwort

9

Ist das eine Anforderung von Android? Oder können sie als normale innere Klassen eingerichtet werden?

Sie können keine regulären (nicht statischen) inneren Klassen sein. Nur eine Instanz der äußeren Klasse kann eine Instanz einer regulären inneren Klasse erstellen, und Android muss Ihre Fragmente für Sie neu erstellen (z. B. bei einer Konfigurationsänderung). Fragmente müssen entweder reguläre Java-Klassen oder statische innere Klassen sein, und sie müssen einen öffentlichen Zero-Argument-Konstruktor haben.

Diese statischen inneren Klassen sollen überhaupt keine Klassen sein, sondern sind nur statische Mitglieder der Klasse, in der sie enthalten sind, genau wie jede statische Methode - wie zB main.

Ich habe keine Ahnung, wie Sie zu dieser Interpretation kamen.

+0

Dies ist aus dem Buch Sun Certified Programmer für JAVA 6 Studienführer, Seite 681 genommen: "Die Klasse selbst ist nicht wirklich statisch, es gibt keine statische Klasse. Der statische Modifikator in diesem Fall sagt, dass die verschachtelten class ist ein statisches Mitglied der äußeren Klasse. Dies bedeutet, dass auf sie zugegriffen werden kann, wie bei anderen statischen Elementen, ohne dass eine Instanz der äußeren Klasse vorhanden ist ". Dies gilt für eine Hauptmethode, da sie statisch ist. Aber dein Kommentar hilft. Vielen Dank. – user1837057

+3

@ user1837057: Ich stimme der Erklärung aus diesem Studienführer nicht zu. IMHO, statische innere Klassen sind so ziemlich nur syntaktische Zucker für Namespacing - in den meisten anderen Aspekten unterscheiden sie sich nicht von regulären Java-Klassen. – CommonsWare