Kotlin null-safety para properties de class

¿Cómo puedo evitar usarlo !! para properties opcionales de class

 class PostDetailsActivity { private var post: Post? = null fun test() { if (post != null) { postDetailsTitle.text = post.title // Error I have to still force using post!!.title postDetailsTitle.author = post.author Glide.with(this).load(post.featunetworkingImage).into(postDetailsImage) } else { postDetailsTitle.text = "No title" postDetailsTitle.author = "Unknown author" Toast.makeText(this, resources.getText(R.string.post_error), Toast.LENGTH_LONG).show() } } } 

¿Debo crear una variable local? ¡Creo que usarlo !! no es una buena práctica

Puedes usar apply:

 fun test() { post.apply { if (this != null) { postDetailsTitle.text = title } else { postDetailsTitle.text = "No title" } } } 

o con:

 fun test() { with(post) { if (this != null) { postDetailsTitle.text = title } else { postDetailsTitle.text = "No title" } } } 

Esta:

 if (post != null) { postDetailsTitle.text = post.title // Error I have to still force using post!!.title } else { postDetailsTitle.text = "No title" } 

Podría ser reemplazado por:

 postDetailsTitle.text = post?.title ?: "No title" 

Si la expresión a la izquierda de?: No es nula, el operador elvis la devuelve; de ​​lo contrario, devuelve la expresión a la derecha.