Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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的迁移-SAM包装器挑战?_Kotlin - Fatal编程技术网

从Java到kotlin的迁移-SAM包装器挑战?

从Java到kotlin的迁移-SAM包装器挑战?,kotlin,Kotlin,我有一个Java SAM接口和一个我想在kotlin中翻译的实现: public interface CallbackWrapper { <T> Consumer<T> wrap(Consumer<T> consumer); } public class MainThreadWrapper implements CallbackWrapper { @Override public <T> Consumer<T&g

我有一个Java SAM接口和一个我想在kotlin中翻译的实现:

public interface CallbackWrapper {
    <T> Consumer<T> wrap(Consumer<T> consumer);
}

public class MainThreadWrapper implements CallbackWrapper {

    @Override
    public  <T> Consumer<T> wrap(Consumer<T> consumer) {
        return i -> {
            Handler handler = new Handler(Looper.getMainLooper());
            handler.post(() -> consumer.accept(i));
        };
    }
}
公共接口回调包装器{
消费者包装(消费者包装);
}
公共类MainThreadWrapper实现CallbackWrapper{
@凌驾
公共消费者包装(消费者){
返回i->{
Handler Handler=新处理程序(Looper.getMainLooper());
handler.post(()->consumer.accept(i));
};
}
}
当然,我们的项目可以处理java代码,但我的神经元不能

任何帮助都将不胜感激


Patrice

等效的Kotlin类如下所示:

class MainThreadWrapper : CallbackWrapper {
    override fun <T> wrap(consumer: Consumer<T>): Consumer<T> =
        Consumer { t ->
            val handler = Handler(Looper.mainLooper)
            handler.post { consumer.accept(t) }
        }
}
class MainThreadWrapper:CallbackWrapper{
覆盖乐趣包装(消费者:消费者):消费者=
消费者{t->
val handler=handler(Looper.mainLooper)
handler.post{consumer.accept(t)}
}
}
请注意,代码使用了两次,它们仅适用于用Java声明的接口。Kotlin替代方案是或,用于匿名接口实现。

(您可能需要类似于
返回消费者{/*…*/}