Czy mogę zdefiniować wiele bloków statycznych?Czy mogę zdefiniować wiele bloków statycznych?
Jeśli to możliwe, dlaczego mam zdefiniować wiele bloków statycznych?
Czy mogę zdefiniować wiele bloków statycznych?Czy mogę zdefiniować wiele bloków statycznych?
Jeśli to możliwe, dlaczego mam zdefiniować wiele bloków statycznych?
tak, można również wykonać wiele bloków inicjalizacyjnych.
To pozwala na umieszczenie kodu z rzeczą zainicjowaną.
private static final Map<String, String> map;
static {
// complex code to initialise map
}
private static final DbConnection conn;
static {
// handle any exceptions and initialise conn
}
Można zdefiniować wiele bloków statycznych. Ale nie sądzę, że jest to naprawdę konieczne. Ale jeśli zdefiniuj, będą one wykonywane sekwencyjnie. oznacza to, że zdefiniowany najpierw blok statyczny zostanie wykonany jako pierwszy, a następny zostanie wykonany jako następny.
Tak. Możliwe jest definiowanie wielu bloków statycznych w klasie java. Pomaga w modularyzacji kodu inicjalizacyjnego, co z kolei pomaga w lepszym zrozumieniu i czytelności kodu (jak wspomniano przez Petera).
public class TryInitialisation {
static int[] values = new int[10];
static{
System.out.println("running initialisation block");
for (int i=0; i< values.length; i++)
values[i] = (int) (100.0 * i);
}
static{
System.out.println("running initialisation block");
for (int i=0; i< values.length; i++)
values[i] = (int) (200.0 * i);
}
static{
System.out.println("running initialisation block");
for (int i=0; i< values.length; i++)
values[i] = (int) (300.0 * i);
}
void listValues(){
for (int i=0; i<values.length; i++)
System.out.println(" " + values[i]);
}
public static void main(String[] args) {
TryInitialisation example = new TryInitialisation();
example.listValues();
example = new TryInitialisation(); // referencing a new object of same type
example.listValues();
}
}
tu jest wyjście:
running initialisation block
running initialisation block
running initialisation block
0
300
600
900
1200
1500
1800
2100
2400
2700
0
300
600
900
1200
1500
1800
2100
2400
2700
Na pierwsze pytanie, co dzieje się podczas próby? – beny23
brzmi jak zadanie domowe ... to twoja praca, aby zademonstrować rygor, gdy zadajesz pytanie (pytania). – jamesTheProgrammer