Sự khác biệt giữa *
và Any
t...
Sự khác biệt giữa *
và Any
t...
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.
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
).
Any
:
fun processItems(items: List<Any>) {
for (item in items) {
println(item)
}
}
processItems
có thể nhận một danh sách các phần tử của bất kỳ kiểu nào.*
(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ể.
fun printList(items: List<*>) {
...
expert
Gợi ý câu hỏi phỏng vấn
Chưa có bình luận nào