如何在kotlin中为函数参数设置非null

时间:2017-10-22 08:44:12

标签: android kotlin

我在Kotlin创建了一个功能。它验证电子邮件和密码字段。我想申请电子邮件和密码不应该为空。 @NotNull有点注释。

有人知道如何在Kotlin中执行此操作吗?因此调用者无法发送空值。

private fun isEmailAndPasswordValid(email: String, password: String): Boolean {

    if (email.isEmpty()) return false

    if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()) return false

    if (password.isEmpty()) return false

    return true
}

4 个答案:

答案 0 :(得分:2)

Kotlin通过 nullable not-nullable 来区分所有类型。例如,类String可用于不可为空的类型String,以及可以为空的类型String?,即可以保留null

在你的例子中,没有使用可空类型,所以你们都很好 - 不需要额外的注释。

应研究documentation以获取更多信息。

答案 1 :(得分:2)

Kotlin内置无效安全性。 String是非null类型,而String?是可空类型。因此,isEmailAndPasswordValid(email: String, password: String)将强制传递给它的值为非null。

答案 2 :(得分:2)

Kotlin语言默认是null安全的,所以在创建新变量时它不能为null,但是当你想要一个可以为null的变量时,你可以添加感叹号来指定它对于Example String?来说可以为null,诠释? ...

不可空

var a: String = "bachiri"
a = null // compilation error

Nullable Type

var a: String? = "bachiri"
a = null // OK

并且如果你想在可空类型上调用一个函数,你应该使用eighter检查null变量(1)或使用安全调用(2)

答案 3 :(得分:1)

当我检查Kotlin文档时,我可以看到String变量不能设置为null,除非你声明它可以,并且你的编译器会引发错误。

  

例如,String类型的常规变量不能保存null

https://kotlinlang.org/docs/reference/null-safety.html