2012-04-04 35 views
10

Tôi có thể xác định nhiều khối tĩnh không?Tôi có thể xác định nhiều khối tĩnh không?

Nếu có thể, tại sao tôi nên xác định các khối tĩnh muliple?

+6

Đối với câu hỏi đầu tiên của bạn, những gì sẽ xảy ra khi bạn cố gắng? – beny23

+0

nghe giống như một câu hỏi về bài tập về nhà ... công việc của bạn là chứng minh sự khắt khe khi đặt câu hỏi. – jamesTheProgrammer

Trả lời

19

có, bạn cũng có thể tạo nhiều khối khởi tạo.

Điều này cho phép bạn đặt mã với nội dung được khởi tạo.

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 
} 
3

Bạn có thể xác định nhiều khối tĩnh. Nhưng tôi không nghĩ nó thực sự cần thiết. Nhưng nếu bạn định nghĩa, thì chúng sẽ được thực hiện tuần tự. tôi có nghĩa là các khối tĩnh được xác định đầu tiên sẽ thực hiện đầu tiên và khối tiếp theo sẽ thực hiện tiếp theo.

2

Có. Có thể định nghĩa nhiều khối tĩnh trong một lớp java. Nó giúp trong mô đun hóa mã khởi tạo của bạn, từ đó giúp hiểu rõ hơn và có thể đọc được bản chất của mã (Như peter đã đề cập).

4
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(); 
} 

} 

đây là kết quả:

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 
Các vấn đề liên quan