Kotlin में विस्मयादिबोधक चिह्न का क्या अर्थ है और इससे कैसे छुटकारा पाएं?
सभी को नमस्कार! मैंने अभी-अभी Java के बाद Kotlin सीखना शुरू किया है और एक अजीब संरचना का सामना किया। किसी और के कोड में मैंने देखा कि वेरिएबल के प्रकार के बाद एक विस्मयादिबोधक चिह्न है, उदाहरण के लिए:
```kotlin
val name: String! = someJavaMethod()
```
मैं समझने की कोशिश कर रहा था कि इसका क्या मतलब है, लेकिन दस्तावेज़ीकरण में कुछ नहीं मिला। जब मैं अपने प्रोजेक्ट में ऐसा कोड लिखता हूं, तो कंपाइलर त्रुटि देता है "This type has a constructor"। और अगर मैं इसे फ़ंक्शन के रिटर्न टाइप में उपयोग करता हूं, तो IDEA इसे लाल रंग में हाइलाइट करता है।
इस बीच, लॉग में मैं देखता हूं कि कभी-कभी वेरिएबल null हो सकता है, और कभी-कभी नहीं। मैंने `String?` लिखने की कोशिश की — तब कंपाइलर शिकायत करता है कि मैं कथित तौर पर "unpack" नहीं कर सकता। और अगर `String` — तो संभावित NPE के बारे में चेतावनी देता है।
कृपया बताएं:
1. `String!` क्या है और यह सिंटैक्स क्यों मौजूद है?
2. ऐसे प्रकारों को सही तरीके से कैसे संभालें?
3. क्या इस विस्मयादिबोधक चिह्न से छुटकारा पाने का कोई तरीका है?
मैं वह कोड उदाहरण दे रहा हूं जो मुझे भ्रमित करता है:
```kotlin
// Java-क्लास
public class```