В java мы можем вызвать метод aMethod(val1 , val2)
с classObject.aMethod(null_if_Val1_NotAvailable,val2)
И внутри метода я проверю, что если val1 равно 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 langauge
?
после того, как тип данных позволяет вам иметь нуль. ссылаться на эту ссылку
Котлин акцентировал внимание на нулевой безопасности. Если вы хотите, чтобы свойство / return type / parameter / local variable было пустым, вам нужно будет использовать типы с нулевым значением , добавив вопросительный знак в конец вашего типа.
например
Foo foo = null // doesn't compile Foo? foo = null // compiles fun foo(foo: Foo) foo(null) // doesn't compile fun bar(foo: Foo?) bar(null) // compiles fun foo(): Foo = null // doesn't compile fun foo(): Foo? = null // compiles
Поэтому для того, чтобы ваш код работал, все, что вам нужно, это указать, что функция aMethod
принимает тип NULL:
fun aMethod(val1: SomeType?, val2) { //... }
Однако, в kotlin, здесь не предлагается использовать null. У нас есть лучший способ справиться с вашей ситуацией. Мы используем параметры по умолчанию , как было предложено nhaarman.
fun aMethod(val1: SomeType = someDefaultValue, val2: OtherType) { //... } aMethod(val2 = OtherType())