2013-02-24 23 views
5

Solo una breve domanda: in tutti gli esempi che ho visto nella documentazione di Android, i frammenti sono classi interne statiche. È un requisito di Android? Oppure possono essere istituiti come normali classi interne? C'è qualcuno là fuori che capisce l'interno di Android abbastanza da fornire una risposta?Frammenti come classi statiche

Da quanto ho letto nella documentazione di OCJP, queste classi interne statiche non sono affatto delle classi, ma sono solo membri statici della classe in cui sono contenuti, proprio come qualsiasi metodo statico - come principale.

Le tue opinioni sono apprezzate.

risposta

9

È un requisito di Android? Oppure possono essere istituiti come normali classi interne?

Non possono essere classi interne regolari (non statiche). Solo un'istanza della classe esterna può creare un'istanza di una normale classe interna e Android deve ricreare i frammenti per te (ad esempio, in caso di modifica della configurazione). I frammenti devono essere classi Java regolari o classi interne statiche e devono avere un costruttore public-argomento zero.

queste classi interne statiche non sono affatto classi, ma sono solo membri statici della classe in cui sono contenuti, proprio come qualsiasi metodo statico, come main.

Non ho idea di come sia venuta questa interpretazione.

+0

Questo è preso dal libro Sun Certified Programmer per la guida allo studio di JAVA 6, pagina 681: "La classe stessa non è realmente statica, non esiste una classe statica. Il modificatore statico in questo caso dice che l'annidato la classe è un membro statico della classe esterna, il che significa che è possibile accedervi, come con altri membri statici, senza avere un'istanza della classe esterna ". Questo è vero per un metodo principale, poiché è statico. Ma il tuo commento aiuta. Grazie. – user1837057

+3

@ user1837057: Non sono d'accordo con la spiegazione di quella guida di studio. IMHO, le classi interne statiche sono praticamente solo zucchero sintattico per il namespace - in molti altri aspetti, esse non sono diverse dalle normali classi Java. – CommonsWare

Problemi correlati