3 Stimmen

Warum sollten wir die Urimatcher-Definition in statischen Blümchenklammern im Inhaltsanbieter aufbewahren?

Ich habe ein Problem mit dem Inhaltsanbieter.
Jedes Mal, wenn ich den Content Provider schreibe, platziere ich die URI MATCHER Definition in den statischen Klammern, aber der URI MATCHER wird als privates Datenmitglied der Klasse deklariert. Nur die Definition (new UriMatcher) wird in den statischen Klammern platziert.

Kann mir bitte jemand den Grund dafür nennen? Ich habe versucht zu googeln, konnte aber keine Antwort finden. Ich werde auch versuchen, bitte lassen Sie mich wissen, wenn jemand weiß, bereits.

Vielen Dank und herzliche Grüße,
SSuman185

6voto

Joseph Earl Punkte 23153

Es ist ein statischer Initialisierungsblock . Wenn Sie eine Member- oder Klassenvariable definieren, muss der Wert in eine einzige Zeile passen (auch wenn Sie ihn über mehrere Zeilen verteilen), und er darf keine komplizierte Logik enthalten.

Für Mitgliedsvariablen können Sie diese komplizierte Initialisierung im Konstruktor durchführen.

Im Wesentlichen ist ein statischer Initialisierungsblock ein Konstruktor für Ihre Klassenvariablen, der es Ihnen ermöglicht, bei der Initialisierung kompliziertere Ausdrücke zu verwenden. Er wird nur einmal ausgeführt, wenn die Klasse zum ersten Mal geladen wird, unabhängig davon, wie viele Instanzen erstellt werden.

Ein privates Mitglied bedeutet lediglich, dass die Variable für andere Klassen nicht zugänglich ist, für die Klasse selbst ist sie jedoch weiterhin zugänglich. Der statische Initialisierungsblock erstellt den URIMatcher also nur einmal (wenn die Klasse geladen wird), egal wie viele Instanzen es gibt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X