Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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
Intellij idea 如何避免空检查_Intellij Idea_Kotlin - Fatal编程技术网

Intellij idea 如何避免空检查

Intellij idea 如何避免空检查,intellij-idea,kotlin,Intellij Idea,Kotlin,我有这样一个存储库类: interface TodosRepository : CrudRepository<Todo, Long> { fun findByUid(uid: String): Todo? } 但是,当使用todo?将状态设置为1时,它要求我使用null检查。status=1 问题是,我认为它不应该问我,因为在这一点上,我非常确定todo不再是空的。 是否有任何解决方法,或者我可能误解了Kotlin的某些内容?我相信您可以使变量不可为null来解决此问题。也

我有这样一个存储库类:

interface TodosRepository : CrudRepository<Todo, Long> {
    fun findByUid(uid: String): Todo?
}
但是,当使用
todo?将状态设置为1时,它要求我使用null检查。status=1
问题是,我认为它不应该问我,因为在这一点上,我非常确定
todo
不再是空的。

是否有任何解决方法,或者我可能误解了Kotlin的某些内容?

我相信您可以使变量不可为null来解决此问题。也可能是
val

val todo: Todo = todosRepository.findByUid(uid) ?: return ResponseEntity("Not found", HttpStatus.NOT_FOUND)
编辑:省略返回类型也可以推断不可为空的
Todo
类型

如果没有显式类型,IntelliJ建议的自动更改将顺利进行;它似乎选择保持它不被修改,而不是将其更改为不可为null,这在某种程度上违背了提示的目的

val todo = todosRepository.findByUid(uid) ?: return ResponseEntity("Not found", HttpStatus.NOT_FOUND)

我相信您可以使变量不可为null来解决这个问题。也可能是
val

val todo: Todo = todosRepository.findByUid(uid) ?: return ResponseEntity("Not found", HttpStatus.NOT_FOUND)
编辑:省略返回类型也可以推断不可为空的
Todo
类型

如果没有显式类型,IntelliJ建议的自动更改将顺利进行;它似乎选择保持它不被修改,而不是将其更改为不可为null,这在某种程度上违背了提示的目的

val todo = todosRepository.findByUid(uid) ?: return ResponseEntity("Not found", HttpStatus.NOT_FOUND)

但是
findByUid
如果未找到,则返回null如果返回null,则该方法将立即由elvis运算符返回。如果在它之后使用
?:
,则这应该不是问题。事实上,您可以尝试完全忽略显式类型,我想您会得到推断的
Todo
。由于某种原因,要求我在
Todo.status=1
上添加空检查的消息现在丢失了,我没有更改任何内容,它就像最后一个片段一样,没有任何警告……是的,省略返回类型也可以工作,但是
findByUid
返回null如果未找到它如果它返回null,则该方法将立即由elvis运算符返回。如果在它之后使用
?:
,这应该不是问题。事实上,您可以尝试完全忽略显式类型,我想您会得到推断的
Todo
。由于某种原因,要求我在
Todo.status=1
上添加空检查的消息现在丢失了,我没有更改任何内容,它就像最后一个代码段一样,没有任何警告……是的,忽略返回类型也可以工作