I, Extension
- Trong kotlin,
extension
là component cho phép chúng ta mở rộng 1 class sẵn có mà không cần phải kế thừa class đó. - Chúng ta có hai loại extension:
- Extension function: định nghĩa function mới cho 1 class sẵn có.
- Extension property: định nghĩa property mới cho 1 class sẵn có.
II, Extension function
- Để tạo ra 1 extension function, chúng ta cần phải đặt
receiver type
trước tên của function. Hãy xem ví dụ dưới đây để hiểu rõ hơn. - Ví dụ 1: tạo extension function
getWelcomeMessage()
với receiver type làInt
1 | fun Int.getWelcomeMessage(): String = if (this == 0) { |
Keyword
this
đại diện cho object của receiver type.Extension function cũng có thể nhận nullable receiver type. Trong trường hợp đó chúng ta có thể check
this == null
để thực hiện 1 công việc nào đó.Ví dụ 2: tạo extension fuction
toString()
với null receiver typeAny?
1 | fun Any?.toString(): String { |
- Extension function cũng có thể kết hợp với generic.
II, Extension property
- Chúng ta tạo ra extension property tương tự như extension function.
- Kotlin không cho phép khởi tạo giá trị cho extenstion property.
- Ví dụ 3:
1 | val <T> List<T>.lastIndex: Int |
III, Tại sao extension lại tối ưu ?
- Chúng ta đều biết Java và Kotlin đều chạy trên JVM và Kotlin class có thể compile sang Java class.
- Một extension function (property) khi được compile sang java code thì đều là những
static
function. - Do đó, extension function giúp tối ưu về performance.
- Ví dụ 4: kotlin compiler sẽ compile extension ở ví dụ 1 và ví dụ 3
1 |
|