Значение из Java-метода без аннотаций присвоено в non-null тип
Вы мигрируете legacy-модуль с Java на Kotlin. В Java осталось хранилище:
public class LegacyStorage {
public String getToken() { /* может вернуть null */ }
}
В новом Kotlin-коде написано:
val token: String = legacyStorage.token
println(token.length)
Что произойдёт, если Java-метод вернёт null?
- Скомпилируется, но упадёт с NullPointerException уже на строке присваивания
- Не скомпилируется: Kotlin не разрешит присвоить результат Java-метода в non-null тип без явной проверки на null
- Скомпилируется, token станет пустой строкой: для non-null типа String подставляется значение по умолчанию
- Скомпилируется и упадёт позже — на строке с обращением к length, потому что до этого момента проверок не вставляется
