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

SAM Conversion trong Kotlin là gì?

expert

Sự khác biệt giữa launch/joinasync/await trong Kotlin coroutines là gì?

senior

Phương thức static trong Java tương đương với cái gì trong Kotlin?

Bình luận

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

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