Trừu tượng — Generics (in, out, where)

Liem Vo
Viet Android Developers
6 min readOct 24, 2021

--

Lớp trong Kotlin có tham số dữ liệu giống như Java

class Result<T>(private val data: T) {
val value: T = data
}

Để tạo một ví dụ của Result đơn giản chỉ cần tạo ra một đối tượng với kiểu dữ liệu.

val coursesResult = Result<String>("Study Kotlin")

Kiểu của tham số có thể được bỏ đi thông qua dữ liệu được truyền vào

val items = Result(mutableList("1", "2"))

Sự mâu thuẫn

Một trong những điểm khó nhất của Java là kiểu dữ liệu ngẫu nhiên và trong Kotlin thì không có. Thay vào đó Kotlin có sai số khai báo và loại dự báo.

Trong điều 31 của lập trình hiệu quả với Java, dùng kiểu ngẫu nhiên để tăng độ uyển chuẩn của API. Đầu tiên, trừu tượng trong Java là bất biến, nghĩa là List<String> không phải là kiểu con của List<Object>. Nếu List không phải là bất biến, nó sẽ không tốt hơn chuỗi của Java, phần code có thể được biên dịch như có thể bị lỗi ở thời điểm chạy.

List<String> strings = new ArrayList<>();
List<Object> objects = strings; // error
objects.add(1);

String s = strings.get(0);

--

--