Was bedeutet ein einzelnes Ausrufezeichen in Kotlin? Ich habe es ein paar Mal gesehen, vor allem bei der Verwendung von Java-APIs. Aber ich konnte es weder in der Dokumentation noch auf StackOverflow finden.Einzelnes Ausrufezeichen in Kotlin
Antwort
Sie heißen platform types und bedeuten, dass Kotlin nicht weiß, ob dieser Wert null
sein kann oder nicht und es liegt an Ihnen zu entscheiden, ob es NULL-Werte gibt oder nicht.
Auf den Punkt gebracht, ist das Problem, dass jeder Verweis aus Java null sein kann, und Kotlin, null sicher durch Design zu sein, gezwungen jeden Java-Wert der Benutzer auf Null überprüfen, oder sichere Anrufe verwenden (
?.
) oder Nicht-Null-Behauptungen (!!
). Die in der reinen Kotlin-Welt sehr nützlichen Features neigen dazu, zum Desaster zu werden, wenn man sie im Kotlin/Java-Setting zu oft verwenden muss.diesem Grund haben wir einen radikalen Ansatz nahmen und bildeten Kotlin des Typ-System entspannter, wenn kommt zu Java-Interop ist: jetzt Referenzen von Java haben kommen speziell gekennzeichneten Typen - Kotlin Blog
Es ist die Bezeichnung für platform types:
T!
bedeutet "T
oder T?
"
A-Typ mit !
notiert genannt wird Plattform Geben Sie ein, was ein Typ ist, der von Java stammt und daher höchstwahrscheinlich null
sein kann. Das ist, was der Kotlin-Compiler standardmäßig beim Aufrufen von Java ableitet (für die grundlegendsten Fälle können Java-Methoden annotated sein, um das zu umgehen). Sie sollten Plattformtypen wie Nullable Typen behandeln, es sei denn, Sie wissen sicherlich, dass die bestimmte API nie null
zurückgeben wird. Der Compiler ermöglicht die Zuordnung von Plattformtypen zu Variablen, die sowohl Nullable als auch Nicht-Null-Typen sein können.
[...]
T!
bedeutet "T or T?
" [...]
Sie unbekannte Plattformtypen als „Typen von beziehen könnten Nullbarkeit ". Es ist auch wichtig zu wissen, dass Sie den Ausrufezeichen-Typ für Ihre eigenen Typen nicht verwenden können, es ist nicht Teil der Kotlin-Syntax, es ist nur eine Notation.
- 1. Ausrufezeichen in VB.NET
- 2. Ausrufezeichen in table.column = 0
- 3. Ausrufezeichen in Prologs
- 4. Curl - Ausrufezeichen in Benutzerauthentifizierung/Passwort
- 5. Ausrufezeichen in Backbone-Router Routen
- 6. Kotlin Bearbeitungsliste
- 7. Ruby Beispiel mit Ausrufezeichen
- 8. Ausrufezeichen auf Facebook
- 9. Regex Übereinstimmung Ausrufezeichen Java
- 10. Egit - Ausrufezeichen auf Ordner
- 11. Ausrufezeichen auf .xlsm Datei
- 12. Kotlin Erweiterungseigenschaften funktionieren nicht in Kotlin Skript
- 13. #! Hashtag und Ausrufezeichen in Links als Ordner?
- 14. Winkelkraft ein unerwünschtes Ausrufezeichen in URL
- 15. Winkelrouting; Ausrufezeichen neben Hashtag in URL
- 16. Warum wird in URLs ein Ausrufezeichen verwendet?
- 17. Rotes Ausrufezeichen in Eclipse mit mercurial
- 18. Warum werden in Ruby-Methoden Ausrufezeichen verwendet?
- 19. Ausrufezeichen nach Hash (#!) In angularjs app
- 20. Validierung Fehlermeldung mit Ausrufezeichen in MVC
- 21. Akka in Scala, Ausrufezeichen und Fragezeichen
- 22. Was bedeutet das Ausrufezeichen in PHP?
- 23. Ausrufezeichen fehlt in Facebook API-Name
- 24. Kann Ausrufezeichen in Batch-Datei nicht entkommen
- 25. Warum benötigt pip ein Ausrufezeichen in iPython?
- 26. Was macht !! (doppeltes Ausrufezeichen) bedeuten?
- 27. Ausrufezeichen im C-Array (Identitätsmatrix)
- 28. Wo Ausrufezeichen setzen, wenn Methoden
- 29. Ausrufezeichen vor ganzzahliger Variable php
- 30. Lambda-Ausdrücke in Kotlin