Giờ làm việc

T2 - T7 8h30 - 18h00

Liên hệ

 

Tìm hiểu về Null Safety, Class trong Lập trình Android với Kotlin

Tìm hiểu Null Safety, Class trong Lập trình Android với Kotlin

Trong xây dựng ứng dụng Android, ngôn ngữ Kotlin đã trở thành một lựa chọn hàng đầu nhờ cú pháp gọn gàng, khả năng tương thích cao và đặc biệt là các tính năng giúp tăng độ an toàn và hiệu quả cho mã nguồn. Bài viết hôm nay sẽ phân tích sâu về ba yếu tố cốt lõi trong Kotlin: Null Safety, Classvòng lặp when, đồng thời giải thích cách sử dụng nhiều constructor trong một class để viết code Android linh hoạt và rõ ràng hơn.

1. Null Safety trong Kotlin – Giải pháp loại bỏ NullPointerException

Null Pointer Exception (NPE) từng là nỗi ám ảnh đối với lập trình viên khi làm việc với Java trên nền tảng Android. Kotlin ra đời với cơ chế Null Safety để hạn chế tối đa lỗi này.

1.1. Khai báo biến với Null Safety

Trong Kotlin, mặc định các biến không thể chứa giá trị null. Nếu muốn cho phép biến có thể null, ta phải khai báo rõ ràng với dấu ?.

var name: String = “Android Developer”
// name = null // ❌ Sẽ lỗi biên dịch var nickname: String? = null // ✅ Có thể null

1.2. Truy cập giá trị có thể null

Để truy cập biến nullable một cách an toàn, Kotlin cung cấp các cách tiếp cận khác nhau:

Sử dụng toán tử ?. (safe call)

val length = nickname?.length // Trả về null nếu nickname là null

Sử dụng toán tử ?: (Elvis operator)

val length = nickname?.length ?: 0 // Nếu nickname null, trả về 0

Sử dụng toán tử !! (not-null assertion)

val length = nickname!!.length // Gây crash nếu nickname là null

1.3. Hàm với tham số nullable

fun printName(name: String?) {
    if (name != null) {
        println("Tên: $name")
    } else {
        println("Tên không xác định")
    }
}

Cơ chế Null Safety giúp giảm thiểu lỗi runtime, một trong những yếu tố rất quan trọng trong quá trình phát triển ứng dụng Android chất lượng cao.

2. Sử dụng vòng lặp when trong Kotlin

Câu lệnh when là sự thay thế mạnh mẽ cho switch trong Java, nhưng linh hoạt hơn rất nhiều.

2.1. Cú pháp cơ bản của when

fun getDeviceType(code: Int): String {
    return when (code) {
        1 -> "Điện thoại"
        2 -> "Máy tính bảng"
        3 -> "Tivi"
        else -> "Không xác định"
    }
}

2.2. Sử dụng when như biểu thức

val message = when (nickname) {
    null -> "Chưa có biệt danh"
    else -> "Biệt danh: $nickname"
}

2.3. Dùng when với nhiều điều kiện

fun classifyBatteryLevel(level: Int): String {
    return when (level) {
        in 0..20 -> "Pin yếu"
        in 21..80 -> "Pin trung bình"
        in 81..100 -> "Pin đầy"
        else -> "Giá trị không hợp lệ"
    }
}

Trong ứng dụng Android, when rất hữu ích khi xử lý các trạng thái UI, phân loại dữ liệu từ server hoặc lựa chọn hành động tùy vào logic nghiệp vụ.

3. Khai báo và sử dụng class trong Kotlin

Trong lập trình hướng đối tượng, class đóng vai trò cốt lõi để mô hình hóa dữ liệu và hành vi. Kotlin hỗ trợ khai báo class gọn gàng và hiện đại hơn so với Java.

3.1. Khai báo class cơ bản

class User(val id: Int, var name: String) {
    fun displayInfo() {
        println("ID: $id - Tên: $name")
    }
}

3.2. Tạo đối tượng và sử dụng

val user = User(101, "Nguyễn Văn A")
user.displayInfo()

4. Sử dụng nhiều constructor trong một class Kotlin

Kotlin cho phép bạn khai báo nhiều constructor để linh hoạt trong việc khởi tạo đối tượng.

4.1. Primary constructor và init block

class Product(val id: Int, val name: String) {
    init {
        println("Đã khởi tạo sản phẩm: $name")
    }
}

4.2. Secondary constructor

class Product2 {
    var id: Int = 0
    var name: String = "Không xác định"

    constructor(id: Int, name: String) {
        this.id = id
        this.name = name
    }

    constructor(name: String) {
        this.name = name
    }

    fun showProduct() {
        println("ID: $id - Tên sản phẩm: $name")
    }
}

4.3. Tạo và sử dụng đối tượng với các constructor khác nhau

val p1 = Product2(1, "Tai nghe Bluetooth")
val p2 = Product2("Sạc dự phòng")

p1.showProduct()
p2.showProduct()

Trong lập trình Android, các constructor phụ rất hữu ích khi bạn cần tạo các đối tượng model trong nhiều ngữ cảnh khác nhau, như khi lấy dữ liệu từ API hoặc khi tạo thủ công.

5. Kết hợp Null Safety và Class trong lập trình Android

Trong môi trường Android, bạn thường phải xử lý dữ liệu đến từ nguồn không đảm bảo (như API hoặc cơ sở dữ liệu). Sự kết hợp giữa Null SafetyClass giúp mã nguồn rõ ràng, tránh lỗi và dễ bảo trì hơn.

Ví dụ mô hình dữ liệu người dùng

class AndroidUser(
    val userId: Int,
    var username: String?,
    var email: String?
) {
    fun printInfo() {
        println("ID: $userId")
        println("Username: ${username ?: "Không có"}")
        println("Email: ${email ?: "Không cung cấp"}")
    }
}

Sử dụng class trong Fragment/Activity

val user = AndroidUser(12, null, "android@example.com")
user.printInfo()
Học Kotlin Android: Thao tác với collection hiệu quả.

Khi phát triển ứng dụng Android với Kotlin, việc hiểu và sử dụng thành thạo Null Safety, Class, Constructor và vòng lặp when sẽ giúp bạn viết được mã nguồn sạch, an toàn và dễ mở rộng. Kotlin không chỉ giúp loại bỏ những lỗi phổ biến của Java, mà còn mang lại trải nghiệm lập trình hiện đại, tối ưu hơn cho môi trường Android.

Nội dung bài viết được chia sẻ bởi Thầy Duy – Thạc sĩ Công nghệ Thông tin tại Đại học Bách Khoa Hà Nội, người có nhiều năm kinh nghiệm trong giảng dạy và nghiên cứu lập trình. Bài viết giúp bạn hiểu rõ về Null Safety, vòng lặp when và cách khai báo class với nhiều constructor trong lập trình Android bằng Kotlin. Nếu bạn quan tâm đến kiến thức chuyên sâu về phát triển ứng dụng Android, đừng bỏ lỡ các kênh chia sẻ học liệu từ Thầy.

Địa chỉ: Trung tâm CodeFresher – Số 104 Hoàng Ngân, Cầu Giấy, Hà Nội.

SĐT: 0813188668 , 0332026803 (Zalo / Call)

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Gọi ngay