处理一个可以在kotlin中返回null的对象

Android Studio 3.0 

我有我的项目转换为Kotlin的Java代码。

 public String getAuthUserEmail() { FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); String email = null; if (user != null) { email = user.getEmail(); } return email; } 

我已经把它转换成这样的koklin:

  fun getAuthUserEmail(): String? { val user: FirebaseUser? = FirebaseAuth.getInstance().currentUser return user?.email } 

我只是想知道我的kotlin版本,如果用户恰好为null。 我是否需要有一个if条件来检查用户是否为空?

我可以把这个功能当作一条线

  fun getAuthUserEmail(): String? { return FirebaseAuth.getInstance().currentUser.email? } 

而调用函数是否需要处理可能从函数返回的空字符串?

非常感谢您的任何建议

我是否需要有一个if条件来检查用户是否为空?

根据Firebase的文档:

返回当前登录的FirebaseUser;如果没有,则返回null。

使用getCurrentUser()!= null来检查用户是否登录。

所以,这取决于你在没有登录用户的情况下如何处理。

如果你想要这个函数是一行,你可以像这样链接它:

 fun getAuthUserEmail(): String? { return FirebaseAuth.getInstance().currentUser?.email } 

如果currentUser为null或currentUser?.email ,它将返回null currentUser?.email为null。


编辑:如果你只是想返回电子邮件,如果它存在。 可以将它写在一行中,因为安全的调用可以链接在一起。

小建议。 如果你确定对象不能为null,但是可以为空,请使用!! 将对象标记为不应该为null的对象。 如果应用程序崩溃它是好的,因为它表明你做了一个糟糕的实施。 看看你的实现的结构,以知道什么时候对象应该是null或者没有,很多开发者过度使用objet?.let而不看这个对象是否应该为null

我只是想知道我的kotlin版本,如果用户碰巧是空的。 我是否需要有一个if条件来检查用户是否为空?

取决于你如何处理场景,但是你可以用Elvis Operator的方式来形成你的数据如下:

 fun getAuthUserEmail(): String? { return FirebaseAuth.getInstance().currentUser?.email ? "No data" }