如何为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运行/调试配置
  • 建立一个多平台项目
  • 使用伴随对象在Kotlin中返回类的一个实例
  • Kotlin:对象与同伴对象之间的区别
  • 为什么在类路径中有不同版本的Kotlin JAR?
  • 使用Gradle构建Kotlin项目有时会导致NoClassDefFoundError失败
  • 在Kotlin的对象字段中带有上下文的Android类
  • Android模拟器6824分段错误
  • 伴随对象相对于普通对象有什么优势?
  • Kotlin for JavaScript的可配置工厂
  • 并发在Kotlin
  • Kotlin language will be the best programming language for Android.