如何在 Kotlin 中设置自定义返回类型为可空类型

3

我创建了一个名为 "email" 的个人数据类型,如何使该类型的值可为空。

例如:

private lateinit var a: email?

或者
fun makeEmailAddress(a: String): email? {
   // TODO
}

1
你好!一个lateinit变量不能为nullable,所以你必须移除lateinit。https://dev59.com/6lcP5IYBdhLWcg3wJ3GJ#44796205 - kimeuvade
1个回答

3

lateinit var 在内部使用 null 来表示未初始化的值,因此从程序的角度来看,它们不能是可空类型。话虽如此,在大多数情况下,使用 lateinit var 的目的是延迟初始化而仍然使用非空类型,这个限制通常不是问题。

如果需要一个可空属性,只需删除 lateinit 修饰符并在声明时将其初始化为 null

private var a: Email? = null

对于函数声明,返回类型Email?应该可以正常工作:

fun makeEmailAddress(a: String): Email? {
   // return whatever you need here, either null or an Email instance
}

请注意,在 Kotlin 中,类型名称是按照惯例大写的,因此我建议您将 email 重命名为 Email(在上面的示例代码中,我使用了大写版本)。

返回类型为'Email?',它不是被覆盖的子类型 - Kyu-Ho Hwang
我收到了这个错误,这就是为什么我要问一个问题的原因。 - Kyu-Ho Hwang
数据类 Email( @get:PropertyName("results") val results: List<EmailDTO>, ) - Kyu-Ho Hwang
这是我正在使用的代码。我使用Firebase,我添加了这个注释。这是原因吗?我该如何更改以解决这个问题? - Kyu-Ho Hwang
我指的是 makeEmailAddress 部分。很可能 makeEmailAddress 方法存在于父类/接口中,你正在尝试覆盖它,对吗? - Joffrey
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接