Câu hỏi phỏng vấn Java
Câu hỏi

Double Brace initialization trong Java là gì?

Câu trả lời

Double Brace Initialization trong Java là một kỹ thuật được sử dụng để khởi tạo các bộ sưu tập hoặc các đối tượng khác một cách ngắn gọn. Kỹ thuật này sử dụng hai cặp dấu ngoặc nhọn: cặp đầu tiên tạo một lớp ẩn danh (anonymous class) kế thừa từ lớp của đối tượng được khởi tạo, và cặp thứ hai là một khối khởi tạo (initialization block) của lớp ẩn danh đó.

Ví dụ:

java Copy
List<String> names = new ArrayList<String>() {{
    add("John");
    add("Jane");
}};

Trong ví dụ trên, một ArrayList của String được khởi tạo và hai phần tử "John" và "Jane" được thêm vào ngay lập tức sử dụng double brace initialization.

Lưu Ý:

  • Hiệu Suất và Bộ Nhớ: Mỗi lần sử dụng double brace initialization, một lớp ẩn danh mới được tạo ra và một thể hiện của lớp đó được tạo ra. Điều này có thể dẫn đến việc sử dụng bộ nhớ không hiệu quả nếu kỹ thuật này được sử dụng lặp đi lặp lại trong mã.
  • Rò Rỉ Phạm Vi (Scope Leakage): Vì khối khởi tạo là một phần của lớp ẩn danh, nó có thể truy cập các thành viên (bao gồm cả các thành viên private) của lớp bên ngoài. Điều này có thể dẫn đến việc rò rỉ phạm vi không mong muốn.
  • Không Phải Là Một Phần Của Java Standard: Double brace initialization không phải là một tính năng chính thức của ngôn ngữ Java, mà là một "trick" sử dụng các tính năng hiện có của Java để đạt được một cú pháp ngắn gọn cho việc khởi tạo.

Kết luận, mặc dù double brace initialization có thể làm cho mã nguồn trở nên ngắn gọn hơn khi khởi tạo các bộ sưu tập hoặc các đối tượng tương tự, nhưng cần cân nhắc kỹ lưỡng về các hạn chế và ảnh hưởng tiềm ẩn đến hiệu suất và bảo mật trước khi sử dụng kỹ thuật này.

senior

senior

Gợi ý câu hỏi phỏng vấn

middle

Java Classloader là gì?

middle

Cấu trúc của Java Heap là gì?

senior

Trong Java connection pooling có nghĩa là gì?

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào