Quay lại thư viện câu hỏi
kotlin Junior

Sự khác biệt giữa lateinit và lazy trong Kotlin là gì và khi nào nên áp dụng từng cơ chế trong phát triển ứng dụng?

Bản chất cơ chế hoạt động

  • lateinit var:
    • Dùng cho kiểu dữ liệu biến đổi (var) không phải kiểu nguyên thủy (primitive types như Int, Boolean).
    • Cho phép hoãn thời điểm khởi tạo giá trị của biến sau khi đối tượng đã được khởi tạo (thường dùng trong Dependency Injection hoặc Android Activity/Fragment lifecycle).
    • Nếu truy cập biến lateinit trước khi nó được gán giá trị, hệ thống sẽ ném ra ngoại lệ UninitializedPropertyAccessException.
  • val lazy:
    • Dùng cho thuộc tính chỉ đọc (val).
    • Giá trị chỉ được tính toán và khởi tạo tại lần truy cập đầu tiên (lazy initialization).
    • Mặc định cơ chế thread-safety là LazyThreadSafetyMode.SYNCHRONIZED, đảm bảo chỉ có một luồng thực thi việc khởi tạo.

Bảng so sánh nhanh

  • lateinit: Dùng cho var, khởi tạo thủ công sau, không hỗ trợ kiểu nguyên thủy.
  • lazy: Dùng cho val, tự động khởi tạo khi gọi lần đầu, hỗ trợ mọi kiểu dữ liệu.

Ví dụ minh họa

class DatabaseManager {
    // lateinit dùng khi phụ thuộc vào Dependency Injection
    @Inject
    lateinit var connectionPool: ConnectionPool

    // lazy dùng khi tài nguyên nặng, chỉ khởi tạo khi thực sự cần thiết
    val heavyConfiguration: ConfigData by lazy {
        ConfigData.loadFromDisk()
    }
}

Lưu ý kinh nghiệm thực chiến

Lập trình viên Junior thường hay nhầm lẫn hai khái niệm này. Hãy nhớ nguyên tắc vàng: Dùng lateinit khi bạn biết chắc chắn giá trị sẽ được gán trước khi sử dụng (nhưng chưa thể gán lúc khai báo). Dùng lazy khi bạn muốn tối ưu hóa hiệu năng, hoãn việc tải tài nguyên nặng cho đến thời điểm gọi lần đầu tiên.

Luyện tập câu hỏi này trong chế độ đếm ngược mô phỏng phỏng vấn thật:
Phòng Luyện Tập
Khóa học Chuyên sâu Chủ đề kotlin

Làm Chủ Phỏng Vấn & Nâng Cao Trình Độ Chuyên Nghiệp

Hệ thống khóa học thực chiến chuẩn Enterprise giúp bạn tự tin chinh phục mọi kỳ phỏng vấn kỹ thuật và thăng tiến thu nhập.

Tải Tuyển Tập 100+ Câu Hỏi Phỏng Vấn Chuyên Sâu (PDF)

Bộ tài liệu chuẩn Senior do Unicode Academy tuyển chọn & biên soạn, hỗ trợ tải về định dạng PDF chuẩn in ấn.

High-Ticket Mentoring
Cần Mentor Phỏng Vấn Thử 1-1 & Tối Ưu CV?

Mô phỏng phỏng vấn kỹ thuật thực tế 1-1 qua Google Meet, nhận xét chi tiết điểm mạnh/yếu và sửa CV trực tiếp cùng giảng viên Unicode.

AI Resume Scanner
Kiểm Tra CV Chuẩn ATS Miễn Phí

Tải CV của bạn lên để hệ thống AI rà soát từ khóa kỹ năng, định dạng và tính điểm chuẩn nhà tuyển dụng.

vừa nâng cấp PRO khóa 1 phút trước   Tìm hiểu khóa học