Lập trình Kotlin — Lớp niêm phong (sealed classes)
Khái niệm sealed class
là một khái niệm mới trong ngôn ngữ Kotlin và chúng ta sẽ biết được lới ích của việc dùng lớp này sau khi đọc qua bài viết này.
Sealed
class là được dùng để đại diện cho giới hạn trong kế thừa, khi một giá trị có thể có từ một tập hợp giới hạn, nhưng không thể có bất kỳ kiểu dữ liệu khác. Chúng là, ở một ngữ cảnh nào là sự mở rộng của lớp enum: tập giá trị của một kiểu enum là hạn chế, và mỗi hằng số enum
tồn tại chỉ là một đối tượng, ở đây lớp con của lớp sealed
có thể có nhiều instance
khác nhau và có trạng thái.
Để khai báo lớp sealed
thì đặt từ khóa sealed
ở trước class và nó có thể có nhiều lớp con, và chúng phải được khai báo cùng file
với sealed
class. Trước Kotlin 1.1 các lớp con phải được khai báo bên trong sealed
class.
sealed class State
object Loading: State()
class Success(val value: Int): State()
class Error(val exception: Exception): State()
- Lớp
sealed
class là lớp tự trừu tượng, và nó không được khởi tạo trực tiếp và không có bất — thành viên trừu tượng - Tất cả hàm khởi tạo của
sealed
class mặc định là private - Lớp kế thừa từ lớp con của
sealed
class có thể đặt bất kỳ nơi đâu không cần trong cùngfile
Tiện ích:
Điều tiện lợi của việc dùng lớp sealed
là khi dùng chúng trong điều kiện when
. Chúng ta có thể xác thực tất cả các điều kiện không cần dùng else. Tuy nhiên nó chỉ đúng khi dùng when
như một biểu thức và không phải là trạng thái.
fun printResult(state: State) = when(state) {
is Loading -> println("Loading")
is Success -> println("Data is loaded: ${state.value}")
is Error -> println("Exception ${state.exception.message}")
}
Cảm ơn các bạn đã đọc bài. Đăng ký kênh chúng tôi để xem những bài học mới nhất.
Youtube kênh: https://bit.ly/2EFOOXs
Thảo luận bằng cách comment ở đây hoặc trong video của blog này.