Kotlin对类属性无效

我怎样才能避免使用!! 为类的可选属性

 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运算符返回它,否则返回右边的表达式。