Вызов функции более высокого порядка Kotlin из Java

У меня есть класс помощника Kotlin, который определяется как:

class CountdownTimer(endDateInSeconds: Long, callback: (timeRemaining: RemainingTime) -> Unit) 

который, как следует из названия, занимает время эпохи и обратный вызов, который должен вызываться с фиксированными интервалами (в этом случае секунд), пока не будет достигнута конечная дата. RemainingTime – это класс данных, содержащий количество времени (секунды, минуты, часы и т. Д.) До даты окончания.

Я могу использовать этот класс у Котлина чисто:

  countdownTimer = CountdownTimer(endDate, { timeRemaining -> var timeString = // format time remaining into a string view?.updateCountdownTimer(timeString) }) 

Однако, когда я вызываю это из Java, я вынужден предоставить ненужное возвращаемое значение в обратном вызове, несмотря на то, что анонимная функция указывает тип возвращаемого модуля (что теоретически эквивалентно возвращаемому типу Java void):

  this.countdownTimer = new CountdownTimer(this.endDate, remainingTime -> { var timeString = // format time remaining into a string if (view != null) { view.updateCountdownTimer(timeString); } return null; }); 

В то время как технически не проблема, необходимость в предоставлении бессмысленного возвращаемого значения из обратного вызова Java кажется .. неправильным. Есть ли лучший способ выразить этот обратный вызов в Котлине?

Unit является object и не является непосредственно эквивалентной void . В фоновом режиме даже код kotlin будет включать return Unit.INSTANCE; в конце обратного вызова. Нет никакого способа обойти это, кроме определения отдельного интерфейса, который всегда возвращает void .