从Java到kotlin的迁移-SAM包装器挑战?
我有一个Java SAM接口和一个我想在kotlin中翻译的实现:从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
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替代方案是或,用于匿名接口实现。(您可能需要类似于返回消费者{/*…*/}
)