2013-06-05 13 views
5

In einem Android Beispiel Klasse Theres diese Methode:Statische Methode ohne Namen

static {   
    addItem(...); 
} 

Als ich die Klasse verweisen, werden die Elemente in der Tat gegeben. Ich habe nie eine Methode wie diese gesehen, a. wie heißt das und b. Ich nehme an, dass diese Methode aufgerufen wird, wenn die Klasse referenziert wird (oder das erste Mal, wenn es referenziert wird)?

Antwort

1

Ja, das ist Static Initialisierungsbaustein und es wird nur dann geladen werden, wenn die Klasse geladen wird, wie Fouad sagte. Wenn Sie die Funktionalität innerhalb des statischen Blocks bei Bedarf ausführen möchten, können Sie stattdessen eine private statische Methode hinzufügen. Schau mal here

9

Dies wird static initializer genannt und der Code darin wird nur einmal beim Laden der Klasse aufgerufen.

0

Dies ist keine Methode. Es ist ein static initializer. Es ist eine Möglichkeit, statisch einige Arbeit zu machen, beim Laden der Klasse, wie das Einrichten einiger Daten.

Bedenken Sie:

static List<String> neverChangingNames; 

static { 
    neverChangingNames = new ArrayList<String>(); 
    neverChangingNames.add("Thomas"); 
    neverChangingNames.add("Derek"); 
    neverChangingNames.add("Michael"); 
    neverChangingNames = Collections.unmodifiableList(neverChangingNames); 
}