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

Trong Kotlin, lateinitlazy là hai cơ chế được sử dụng để k...

Câu trả lời

lateinit

lateinit được sử dụng với các biến var (có thể thay đổi được) và chỉ áp dụng cho các biến mà không phải là kiểu dữ liệu nguyên thủy. Nó cho phép bạn khai báo một biến mà không cần khởi tạo ngay lập tức tại thời điểm khai báo. Điều này hữu ích trong các trường hợp bạn không thể khởi tạo một biến tại thời điểm khai báo do giá trị của nó phụ thuộc vào một số điều kiện hoặc phụ thuộc được khởi tạo sau (ví dụ: qua Dependency Injection). Tuy nhiên, bạn phải chắc chắn rằng biến đó được khởi tạo trước khi sử dụng; nếu không, một UninitializedPropertyAccessException sẽ được ném ra[1][2][3][4][5].

Các điều kiện sử dụng lateinit bao gồm:

  • Chỉ dùng cho các biến var.
  • Không thể sử dụng với kiểu dữ liệu nguyên thủy.
  • Biến phải được khởi tạo trước khi sử dụng.

lazy

lazy là một hàm trả về một đối tượng Lazy<T>, được sử dụng để khởi tạo các biến val (không thể thay đổi) một cách trì hoãn. Điều này có nghĩa là giá trị của biến chỉ được tính toán khi nó được truy cập lần đầu tiên, và sau đó giá trị đó sẽ được lưu lại cho các lần truy cập tiếp theo. lazy thường được sử dụng khi việc khởi tạo một biến là tốn kém về mặt tài nguyên hoặc cần thời gian và bạn muốn trì hoãn việc này cho đến khi thực sự cần đến giá trị của biến[1][2][3][4][5].

Các điều kiện sử dụng lazy bao gồm:

  • Chỉ dùng cho các biến val.
  • Khởi tạo biến một cách trì hoãn và chỉ một lần duy nhất khi biến đó được truy cập lần đầu.
  • Có thể cung cấp một lambda để xác định cách khởi tạo biến.

So sánh

  • lateinit dùng cho var trong khi lazy dùng cho val.
  • lateinit cho phép khởi tạo biến sau này nhưng phải đảm bảo biến được khởi tạo trước khi sử dụng. lazy khởi tạo biến khi nó được truy cập lần đầu và giữ giá trị đó cho mọi l...
expert

expert

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

middle

Làm thế nào để chuyển đổi List thành Map trong Kotlin?

junior

Làm thế nào để khởi tạo một mảng trong Kotlin với các giá trị?

middle

Sự khác biệt giữa openpublic trong Kotlin là gì?

Bình luận

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

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