Если вы пишете var s: String = "hello"
или var s = "hello"
, переменная имеет, что неудивительно, тип String
.
Однако это означает, что вы не можете хранить null
значения в этом var
, так как тип String
не является «обнуляемым» в Kotlin. Тип, который допускает как String
s, так и null
, называется в котлине String?
.
Чтобы ваши var
могли принимать значения null
, вы можете явно указать тип с помощью var s: String? = "hello"
. Но вы также можете привести "hello"
к типу String?
, написав val s = "hello" as String?
, чтобы вывод типа обнаружил этот новый тип. По моему мнению, последняя версия не является необходимой путаницей, и я бы ее избегал, но, если честно, это редкие ситуации, когда происходит кастинг, например. String
до String?
удобно, когда нет такого приятного способа указать явный тип, как в вашем примере.