Câu hỏi phỏng vấn Kotlin
Câu hỏi

Sự khác biệt giữa *Any t...

Câu trả lời

Trong Kotlin, khi làm việc với generics, * (được gọi là "star projection") và Any đều có thể xuất hiện trong các định nghĩa kiểu, nhưng chúng có ý nghĩa và mục đích sử dụng khác nhau.

1. Any

Any là kiểu cơ sở cho tất cả các kiểu không nullable trong Kotlin và tương đương với Object trong Java. Khi bạn sử dụng Any trong generics, bạn đang chỉ định rằng tham số kiểu có thể là bất kỳ kiểu nào (không phải null).

  • Ví dụ sử dụng Any:
    kotlin Copy
    fun processItems(items: List<Any>) {
        for (item in items) {
            println(item)
        }
    }
    Trong ví dụ này, processItems có thể nhận một danh sách các phần tử của bất kỳ kiểu nào.

2. * (Star Projection)

Star projection (*) được sử dụng khi bạn không quan tâm hoặc không biết kiểu cụ thể của các phần tử trong một generic container, nhưng vẫn muốn sử dụng nó một cách an toàn mà không cần quan tâm đến kiểu dữ liệu cụ thể. Nó là một cách để nói "kiểu gì cũng được" và được sử dụng trong các trường hợp bạn không thể hoặc không muốn chỉ định kiểu cụ thể.

  • Ví dụ sử dụng Star Projection:
    kotlin Copy
    fun printList(items: List<*>) {

...

expert

expert

Gợi ý câu hỏi phỏng vấn

expert

Tại sao chúng ta sử dụng companion object như một loại thay thế cho các trường static của Java trong Kotlin?

middle

Kotlin có những ưu điểm gì so với Java?

middle

Toán tử double-bang !! trong Kotlin là gì?

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào