2013-10-25 17 views
5

Ich habe eine Klasse erstellt, die zuerst statisch war, diese Klasse nicht beibehalten Zustand (nicht den Kontext oder Variablen) ist nur eine Liste von Funktionen. Aber die Klasse ist nicht sehr in der App verwendet, also habe ich beschlossen, Klasse instanziierbar machen.Android statische Klasse vs nicht-statische Klasse Speicher Leistung

Warum?

Weil ich denke, dass eine instanziierbare Klasse weniger Speicher benötigt, da sie während des gesamten Anwendungslebenszyklus nicht verfügbar ist.

Ist das richtig?

Eine statische Klasse verwendet mehr Speicher als eine nicht statische Klasse?

Vielen Dank

+0

"Statische Klasse" ist kein Standardbegriff. Was meinst du mit "statische Klasse"? Auf jeden Fall lautet die Antwort wahrscheinlich "Nein, es gibt keinen Unterschied". – Joni

Antwort

9

Ich denke, Sie haben missverstanden, wie Klassen funktionieren. Jede Art von Klasse ist während der gesamten Lebensdauer der App "verfügbar". Der Speicher, der für die Klasse selbst (die Methoden usw.) verwendet wird, unterscheidet sich stark von dem Speicher, der von Instanzen verwendet wird. Außer Sie eine Instanz der Klasse erstellen, ist es irrelevant. Und sogar statische Klassen können instanziiert werden - sie enthalten lediglich keinen impliziten Verweis auf eine Instanz der einschließenden Klasse.

Wenn Ihre Klasse keine implizite Referenz benötigt (d. H. Sie verwendet sie nicht), dann machen Sie sie zu einer statischen geschachtelten Klasse - oder ziehen Sie sie trotzdem als oberste Klasse heraus. (Verschachtelte Klassen können manchmal ein Problem sein - die Regeln um Top-Level-Klassen sind einfacher.)

2

Eine statische Klasse als solche verwendet nicht mehr Speicher als eine nicht statische. Alle Klassen sind immer in einer Anwendung verfügbar - Sie können immer eine statische Klasse verwenden oder eine Instanz einer nicht statischen Klasse erstellen.

Wenn Sie nur Methoden in Ihrer Klasse haben (die zu Hilfsmethodentypen gehören), ist die Verwendung einer statischen Klasse bequemer (Sie müssen keine Instanz erstellen) und hat keinen Einfluss auf die Speichernutzung.