Kotlin null-safety для свойств класса

Как я могу избежать использования !! для дополнительных свойств класса

 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.featuredImage).into(postDetailsImage) } else { postDetailsTitle.text = "No title" postDetailsTitle.author = "Unknown author" Toast.makeText(this, resources.getText(R.string.post_error), Toast.LENGTH_LONG).show() } } } 

Должен ли я создать локальную переменную? Я думаю используя !! не является хорошей практикой

Вы можете использовать apply:

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

или с:

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

Эта:

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

Может быть заменено на:

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

Если выражение слева от?: Не является нулевым, оператор elvis возвращает его, иначе он возвращает выражение вправо.