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, Class và vò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 Safety và Class 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()

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.
- Kênh YouTube: https://www.youtube.com/@LeHongDuyCNTT
- GitHub cá nhân: https://github.com/DuyLeHong
Đị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