0
我有一個倉儲類是這樣的:如何避免無效檢查
interface TodosRepository : CrudRepository<Todo, Long> {
fun findByUid(uid: String): Todo?
}
,並且可以標記該待辦事項爲完成一個方法:
fun markAsDone(uid: String): ResponseEntity<String> {
var todo = todosRepository.findByUid(uid)
if(todo == null){
return ResponseEntity("Not found", HttpStatus.NOT_FOUND)
}
todo.status = 1
todosRepository.save(todo)
return ResponseEntity.ok("Saved")
}
的IntelliJ問我更換todo == null
用elvis運算符:
fun markAsDone(uid: String): ResponseEntity<String> {
var todo: Todo? = todosRepository.findByUid(uid) ?: return ResponseEntity("Not found", HttpStatus.NOT_FOUND)
todo.status = 1
todosRepository.save(todo)
但後來,它要求我在將狀態設置爲1時使用空檢查h todo?.status = 1
事情是,我認爲它不應該問我,因爲在那一點上,我非常肯定todo
不是null了。
有什麼解決方法,或者我可能誤解了Kotlin上的某些東西?
但如果沒有找到 –
它,如果它返回null'findByUid'返回null,則該方法將立即被貓王操作返回。 – Naetmul
如果你在後面使用':',這應該不成問題。事實上,你可以嘗試完全省略顯式類型,我想你會得出'Todo'推斷。 – zsmb13