从 java 中删除冗余 SAM 构造函数时,Kotlin 丢失了可空性信息
Kotlin loses nullability information when removing redudant SAM constructor from java
我在我的一个项目中使用 SendBird。其中一个函数是用来连接sdk的:
SendBird.connect(id, token, object : SendBird.ConnectHandler {
override fun onConnected(user: User?, e: SendBirdException?) {
if (e != null) {
// handle error
} else {
// handle success
}
}
})
Kotlin 提示我可以将其转换为 lambda:
SendBird.connect(userId.toString(), accessToken) { user, e ->
if (e != null) {
// handle error
} else {
// handle success
}
}
问题是 lambda 内部的 user
是 User!
类型,而实际类型是 User?
,这有时会导致崩溃。
SendBird android sdk 是用 java 编写的,@Nullable
/@NonNull
没有正确注释任何内容。在保持可空类型的同时使用 lambda 的任何方法 User?
?
明确指定类型
SendBird.connect(userId.toString(), accessToken) { user: User?, e ->
if (e != null) {
// handle error
} else {
// handle success
}
}
我在我的一个项目中使用 SendBird。其中一个函数是用来连接sdk的:
SendBird.connect(id, token, object : SendBird.ConnectHandler {
override fun onConnected(user: User?, e: SendBirdException?) {
if (e != null) {
// handle error
} else {
// handle success
}
}
})
Kotlin 提示我可以将其转换为 lambda:
SendBird.connect(userId.toString(), accessToken) { user, e ->
if (e != null) {
// handle error
} else {
// handle success
}
}
问题是 lambda 内部的 user
是 User!
类型,而实际类型是 User?
,这有时会导致崩溃。
SendBird android sdk 是用 java 编写的,@Nullable
/@NonNull
没有正确注释任何内容。在保持可空类型的同时使用 lambda 的任何方法 User?
?
明确指定类型
SendBird.connect(userId.toString(), accessToken) { user: User?, e ->
if (e != null) {
// handle error
} else {
// handle success
}
}