Kotlin中的單個感嘆號意味着什麼?我已經看過幾次,特別是使用Java API的時候。但是我無法在文檔或StackOverflow中找到它。Kotlin中的單個感嘆號
33
A
回答
43
它們被稱爲platform types,它們表示Kotlin不知道該值是否可以爲null
並且由您決定它是否可以爲空。
概括地說,問題是,從Java未來的任何引用可以爲空,科特林,通過設計被空安全,迫使用戶爲空,檢查每一個Java值,或者使用安全的調用(
?.
)或非空斷言(!!
)。那些在純Kotlin世界中非常方便的功能,當你不得不在Kotlin/Java環境中經常使用它們時,往往會變成一場災難。這就是爲什麼我們採取了激進的做法和取得科特林的類型系統時談到Java的互操作更輕鬆:現在從Java未來的引用都特意標明類型 - Kotlin Blog
22
這對platform types符號:
T!
意味着 「T
或T?
」
1
與!
譜寫的類型稱爲平臺鍵入,這是一種類型來自Java,因此最可能是null
。這是Kotlin編譯器在調用Java時推斷的內容(對於最基本的情況,Java方法可以用annotated來解決這個問題)。除非您確實知道特定的API永遠不會返回null
,否則您應該處理的平臺類型爲可爲空的類型。編譯器允許將平臺類型分配給可爲空和非空類型的變量。
[...]
T!
意味着 「T or T?
」[...]
您可以參考的平臺類型爲「類型的未知可空性「。另外重要的是要知道,你不能爲自己的類型使用感嘆號標記的類型,它不是Kotlin語法的一部分,它只是一個符號。
相關問題
- 1. 的感嘆號
- 2. 雙感嘆號?
- 3. 感嘆號
- 4. SQL XML中的感嘆號
- 5. 感嘆號錯誤?
- 6. cmd和感嘆號
- 7. 感嘆號衝突
- 8. 感嘆號在VB.NET
- 9. 感嘆號在網址中
- 10. 帶感嘆號的Telerik RadTextBox
- 11. facebook上的感嘆號
- 12. 感嘆號的NSString前
- 13. 阿卡Scala中,感嘆號和問號
- 14. YAML中的單個感嘆號有什麼作用?
- 15. Eclipse顛覆感嘆號
- 16. Java基礎感嘆號
- 17. java eclipse紅色感嘆號
- 18. Android感嘆號錯誤
- 19. 使用感嘆號'!'在C
- 20. 鑰匙感嘆號枚舉
- 21. pynput合併感嘆號
- 22. URLPathAllowedCharacterSet不編碼感嘆號
- 23. Shell感嘆號命令
- 24. 使感嘆號更可見
- 25. dll感嘆號問題?
- 26. 瞭解雙重感嘆號
- 27. 感嘆號操作符?
- 28. 雙鏈感嘆號所需的括號?
- 29. 針對Xcode中的文件感嘆號(!)
- 30. Eclipse中的紅色感嘆號與mercurial