Почему допустимо вызывать функцию void в Assert.assertNotNull? - PullRequest
0 голосов
/ 28 августа 2018

Возьмем, к примеру, следующий псевдокод,

Assert.assertNotNull(cut.func())

Где cut - это ненулевой тестируемый класс, а func() - некоторая функция, которая возвращает void.

Более того, если func() не выдает никаких ошибок, это приведет к правильному утверждению.

Поскольку невозможно установить нулевой объект изнутри себя в Java / Kotlin , (то есть func() не может установить cut в null), почему он действителен вызвать пустые функции в ненулевых утверждениях?

Это просто потому, что void - это не то же самое, что null?

1 Ответ

0 голосов
/ 28 августа 2018

Возвращаемый тип Java void сопоставляется с объектом Unit в Kotlin, и Unit не является null.

val x = System.out.println("") // void Java method

println(x == null) // "false"
println(x == Unit) // "true"
...