Вызов метода с нулевым параметром

В 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())