如何为kotlin中的函数参数设置不为null

我在Kotlin创建了一个函数。 它validation电子邮件和密码字段。 我想申请电子邮件和密码不应该为空。 @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 Solutions collect form web for “如何为kotlin中的函数参数设置不为null”

Kotlin将所有types区分为可为空不可空的 。 例如,类String可以用于Stringtypes,不能为空,typesString? ,它是可以为空的,即可以为null

在你的例子中,不使用可为空的types,所以你都很好 – 不需要额外的注释。

应该研究文件的进一步信息。

Kotlin具有内置的安全性。 String是一个非空types,而String? 是可以空的types。 所以, isEmailAndPasswordValid(email: String, password: String)将强制传递给它的值是非空的。

Kotlin语言在默认情况下是无效的,所以当创建一个新的variables时,它不能为null,但是当你想要一个可为null的variables时,你可以添加感叹号来指定它可以为null,例如String ?, Int? …

不可空

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

可空types

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

如果你想调用可空types的函数,你应该使用更大的空值variables(1)或使用安全调用(2)

当我检查Kotlin文档时,我可以看到一个Stringvariables不能被设置为null,除非你声明它是可以的,并且你的编译器会产生一个错误。

例如,一个Stringtypes的正则variables不能为空

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

  • 如何在Kotlin中列出字段注释?
  • 为什么不聪明处理这种情况呢?
  • 如何将List <转换为List ?
  • 在lateinit声明后variables不更新,无法返回
  • 如何设置Kotlin的财产价值
  • 如何将Kotlin的默认属性值设置为`this`
  • 在Scala 2.10中泛化的generics
  • 如何将数字字符(0-9)转换为数字值?
  • 在eclipse上的Kotlin类表现怪异,每当我运行我从其他文件输出的程序
  • 用于java方法的kotlinreflection接受null类数组
  • Kotlin的解构声明有什么意义?
  • Kotlin language will be the best programming language for Android.