2017-05-07 28 views
33

Dấu chấm than đơn có nghĩa là gì trong Kotlin? Tôi đã nhìn thấy nó một vài lần đặc biệt là khi sử dụng Java API. Nhưng tôi không thể tìm thấy nó trong tài liệu cũng như trên StackOverflow.Dấu chấm than đơn lẻ trong Kotlin

Trả lời

43

Chúng được gọi là platform types và có nghĩa là Kotlin không biết liệu giá trị đó có thể hoặc không thể là null và tùy thuộc vào bạn có quyết định xem nó có bị vô hiệu hay không.

Tóm lại, vấn đề là bất kỳ tài liệu tham khảo đến từ Java có thể được null, và Kotlin, là null-an toàn bằng cách thiết kế, buộc người dùng null-kiểm tra tất cả các giá trị Java, hoặc sử dụng các cuộc gọi an toàn (?.) hoặc xác nhận không null (!!). Đó là những tính năng rất tiện dụng trong thế giới tinh khiết của Kotlin, có xu hướng biến thành thảm họa khi bạn phải sử dụng chúng quá thường xuyên trong cài đặt Kotlin/Java.

Đây là lý do tại sao chúng tôi sử dụng phương pháp triệt để và làm hệ thống kiểu Kotlin của thoải mái hơn khi là nói đến Java interop: Các loại tại tài liệu tham khảo đến từ Java đã đánh dấu đặc biệt - Kotlin Blog

1

A Loại ký hiệu với ! được gọi là nền tảng loại, là loại đến từ Java và do đó hầu hết có thể là null. Đó là những gì trình biên dịch Kotlin truyền theo mặc định khi gọi Java (đối với các trường hợp cơ bản nhất, các phương thức Java có thể là annotated để giải quyết vấn đề này). Bạn nên xử lý các loại nền tảng là không thể loại trừ các loại, trừ khi bạn chắc chắn biết rằng API cụ thể sẽ không bao giờ trả về null. Trình biên dịch cho phép các kiểu nền tảng được gán cho các biến của cả hai kiểu nullable và non-null.

Notation for Platform Types

[...]

T! có nghĩa là "T or T?" [...]

Bạn có thể tham khảo các loại nền tảng là "loại chưa biết khả năng vô hiệu ". Điều quan trọng cần biết là bạn không thể sử dụng kiểu đánh dấu chấm than cho các kiểu của riêng bạn, nó không phải là một phần của cú pháp Kotlin, nó chỉ là một ký hiệu.

Các vấn đề liên quan