Avatar ·

ماذا تعني علامة التعجب في Kotlin؟ (علامة تعجب مفردة)

مرحبًا أيها الزملاء! بدأت مؤخرًا في تعلم Kotlin بعد Java، وهناك شيء يربكني. في بعض الأماكن في الكود أرى علامة تعجب مفردة بعد نوع البيانات، مثل `String!` أو `List!`. أفهم أن Kotlin يميز بدقة بين الأنواع nullable (`String?`) و non-null (`String`)، ولكن ما هو `String!`؟ لم أجد هذا في الوثائق الرسمية. إليك مثال من مشروعي حيث أستخدم مكتبة Java: ```kotlin // كود Java public class JavaClass { public static String getString() { return null; // قد يرجع null } } // كود Kotlin fun main() { val result: String! = JavaClass.getString() // IDE يظهر String! println(result.length) // هنا أتوقع خطأ في الترجمة، لكن لا يوجد } ``` IDE (IntelliJ IDEA) يظهر النوع `String!` للمتغير `result`. حاولت استخدام `result` كسلسلة نصية عادية، والمترجم لا يشتكي، لكن في وقت التشغيل أحصل على NullPointerException. لماذا يحدث هذا؟ هل هو نوع من...