Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Kotlin中将空字符串转换为LocalDateTime时会发生什么_Kotlin - Fatal编程技术网

在Kotlin中将空字符串转换为LocalDateTime时会发生什么

在Kotlin中将空字符串转换为LocalDateTime时会发生什么,kotlin,Kotlin,我有如下代码: val logoutDt = history?.getBody() as? LocalDateTime 如果history?.getBody()的值是一个空字符串,logoutDt的值是多少?如果它是null,你将得到TypeCastException和as的null: kotlin.TypeCastException:null不能转换为非null类型java.time.LocalDate 如果它是一个“空字符串”,您将得到ClassCastException: java.la

我有如下代码:

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

如果
history?.getBody()
的值是一个空字符串,
logoutDt的值是多少?

如果它是
null
,你将得到
TypeCastException
as
null

kotlin.TypeCastException:null不能转换为非null类型java.time.LocalDate

如果它是一个“空字符串”,您将得到
ClassCastException

java.lang.ClassCastException:java.lang.String不能转换为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
}

无论字符串是空的还是有一些内容,将其用
as?
强制转换为
LocalDateTime
将始终产生
null
,而将
强制转换为
as
将始终导致
ClassCastException

如果要从
字符串中获取
LocalDateTime
,则必须对其进行转换。您可以使用
LocalDateTime.parse
static函数执行此操作:

val date: LocalDateTime? = history?.getBody()?.let { body -> LocalDateTime.parse(body) }

到目前为止你试过什么?首先,你试过了吗?第二,如果
getBody()
返回
String
,结果将是
null
,因为
String
不能强制转换为
LocalDateTime
。我想你错过了
as?
中的问号。在这两种情况下,
logoudDt
的值都是
null
,因为
as?
是“安全的”cast@user2340612的确,谢谢。我已经编辑了我的答案。但是,它也不会产生
LocalDateTime