Kotlin 使用null参数调用方法

Kotlin 使用null参数调用方法,kotlin,Kotlin,在java中,我们可以调用方法aMethod(val1,val2) 使用classObject.aMethod(如果Val1不可用,则为null,val2) 在方法内部,我将检查val1是否为null 我将初始化它 如何在Kotlin做同样的事情。 我试过了,但它说Null不能是非Null类型的值您可以使用默认值: fun aMethod(val1: String = "default value", val2: String) 现在可以使用默认方法,如下所示: classObject.aMe

在java中,我们可以调用方法
aMethod(val1,val2)

使用
classObject.aMethod(如果Val1不可用,则为null,val2)
在方法内部,我将检查val1是否为null 我将初始化它

如何在Kotlin做同样的事情。
我试过了,但它说Null不能是非Null类型的值

您可以使用默认值:

fun aMethod(val1: String = "default value", val2: String)
现在可以使用默认方法,如下所示:

classObject.aMethod(val2 = "val2")
这样试试看

fun printHello(name: String?): Unit {
    if (name != null)
        println("Hello ${name}")
    else
        println("Hi there!")
    // `return Unit` or `return` is optional
}
按您的意愿返回类型。
避免


在数据类型允许空值之后。请参阅Kotlin对零位安全的强调。如果希望属性/返回类型/参数/局部变量为null,则必须使用,方法是在类型末尾添加问号

e、 g

因此,为了使代码正常工作,您只需指定函数
aMethod
采用可空类型:

fun aMethod(val1: SomeType?, val2) {
    //...
}
但是,在kotlin中,不建议在此处使用null。我们有更好的办法来处理你的情况。我们使用默认参数,正如nhaarman所建议的那样

fun aMethod(val1: SomeType = someDefaultValue, val2: OtherType) {
    //...
}
aMethod(val2 = OtherType())

或者交换
val1
val2
,因此无需使用命名参数。在Kotlin语言参考中,这一点已明确涵盖:
fun aMethod(val1: SomeType = someDefaultValue, val2: OtherType) {
    //...
}
aMethod(val2 = OtherType())