Что происходит, когда я конвертирую пустую строку в LocalDateTime в Kotlin - PullRequest
0 голосов
/ 25 октября 2019

У меня есть код, подобный приведенному ниже:

val logoutDt = history?.getBody() as? LocalDateTime

Какое значение logoutDt, если значение history?.getBody() является пустой строкой?

Ответы [ 2 ]

1 голос
/ 25 октября 2019

Если это null, вы получите TypeCastException с as и просто null с as?:

kotlin.TypeCastException: ноль не может быть приведен кнепустой тип java.time.LocalDate

Если это «пустая строка», вы получите ClassCastException:

java.lang.ClassCastException:Строка не может быть приведена к java.time.LocalDate

Приведения не работают таким образом.

Вам необходимо использовать немного больше кода:

fun main() {
    val formatter = DateTimeFormatter.ISO_DATE_TIME
    val date = LocalDateTime.parse("2011-12-03T10:15:30", formatter)

    println(date) // 2011-12-03T10:15:30
}
0 голосов
/ 26 октября 2019

Независимо от того, является ли строка пустой или имеет какое-либо содержимое, приведение ее с as? к LocalDateTime всегда будет производить null, а приведение к as всегда приведет кClassCastException.

Если вы хотите получить LocalDateTime от String, вам нужно преобразовать его. Вы можете сделать это с помощью статической функции LocalDateTime.parse:

val date: LocalDateTime? = history?.getBody()?.let { body -> LocalDateTime.parse(body) }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...