Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Java调用Kotlin高阶函数_Java_Android_Kotlin - Fatal编程技术网

从Java调用Kotlin高阶函数

从Java调用Kotlin高阶函数,java,android,kotlin,Java,Android,Kotlin,我有一个Kotlin助手类,定义为: class CountdownTimer(endDateInSeconds: Long, callback: (timeRemaining: RemainingTime) -> Unit) 顾名思义,需要一个划时代时间和回调,以固定的间隔(在本例中为秒)调用,直到到达结束日期。RemainingTime是一个数据类,包含到结束日期的时间量(秒、分钟、小时等) 我可以从Kotlin干净地使用这个类: countdownTimer = C

我有一个Kotlin助手类,定义为:

class CountdownTimer(endDateInSeconds: Long, callback: (timeRemaining: RemainingTime) -> Unit)
顾名思义,需要一个划时代时间和回调,以固定的间隔(在本例中为秒)调用,直到到达结束日期。RemainingTime是一个数据类,包含到结束日期的时间量(秒、分钟、小时等)

我可以从Kotlin干净地使用这个类:

        countdownTimer = CountdownTimer(endDate, { timeRemaining ->
             var timeString = // format time remaining into a string
             view?.updateCountdownTimer(timeString)
         })
但是,当我从Java调用这个函数时,我不得不在回调中提供不必要的返回值,即使匿名函数指定了一个单元返回类型(理论上它相当于Java void返回类型):


虽然从技术上讲这不是一个问题,但不得不从Java回调中提供一个无意义的返回值似乎是。。错。有没有更好的方法在Kotlin中表达这个回调

单元
是一个
对象
,并不直接等同于
无效
。在后台,甚至kotlin代码也将包括
return Unit.INSTANCE位于回调的末尾。除了定义一个总是返回
void
的单独接口之外,没有其他方法可以解决这个问题

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