Trước hết, không thể khởi tạo kiểm tra thành một chuỗi mới() ở đó, vì khối khởi tạo ngay lập tức gán nó cho thứ gì khác. Dù sao thì ...
Một thay thế được khởi tạo tại tờ khai:
public class BlockTest {
String test = "testString";
}
khác là trong các nhà xây dựng:
public class BlockTest {
String test;
public BlockTest() {
test = "testString";
}
}
Đó là hai chính, lựa chọn phổ biến.
Có hai cách sử dụng chính cho khối khởi tạo.Đầu tiên là cho các lớp học vô danh mà phải thực hiện một số logic trong quá trình khởi:
new BaseClass() {
List<String> strings = new ArrayList<String>();
{
strings.add("first");
strings.add("second");
}
}
Thứ hai là để khởi tạo phổ biến mà phải xảy ra trước mỗi constructor:
public class MediocreExample {
List<String> strings = new ArrayList<String>();
{
strings.add("first");
strings.add("second");
}
public MediocreExample() {
...
}
public MediocreExample (int parameter) {
...
}
}
Tuy nhiên, trong cả hai trường hợp có những lựa chọn thay thế không sử dụng các khối khởi tạo:
new BaseClass() {
List<String> strings = createInitialList();
private List<String> createInitialList() {
List<String> a = new ArrayList<String>();
a.add("first");
a.add("second");
return a;
}
}
Và:
public class MediocreExample {
List<String> strings;
private void initialize() {
strings = new List<String>();
strings.add("first");
strings.add("second");
}
public MediocreExample() {
initialize();
...
}
public MediocreExample (int parameter) {
initialize();
...
}
}
Có nhiều cách để thực hiện những việc này, sử dụng cách phù hợp nhất và cung cấp mã rõ ràng và dễ bảo trì nhất.
Nguồn
2013-08-07 07:04:33
một constructor .. – Ankit