2013-06-05 18 views
5

Trong một ví dụ lớp Android theres phương pháp này:phương pháp tĩnh mà không có một tên

static {   
    addItem(...); 
} 

Khi tôi tham khảo các lớp học, các mục được thực sự thêm. Tôi chưa bao giờ thấy một phương pháp như thế này, a. cái này được gọi là gì và b. Tôi cho rằng phương pháp này được gọi bất cứ khi nào lớp được tham chiếu (hoặc lần đầu tiên nó được tham chiếu)?

Trả lời

1

Có điều này là khối khởi tạo tĩnh và nó sẽ được nạp chỉ khi lớp đang tải như Fouad nói. Nếu bạn muốn thực hiện chức năng bên trong khối tĩnh khi bạn muốn bạn có thể thêm một phương thức tĩnh riêng thay thế. Có một cái nhìn here

9

Điều này được gọi là static initializer và mã bên trong nó chỉ được gọi một lần khi tải lớp.

0

Đây không phải là phương pháp. Nó là static initializer. Đó là một cách tĩnh làm một số công việc, trên tải lớp, như thiết lập một số dữ liệu.

Hãy xem xét điều này:

static List<String> neverChangingNames; 

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