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-