我有一个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));
};
}
}
当然我们的项目可以处理java代码,但我的神经元不能。 ;)
任何帮助都将受到赞赏。
帕特里斯
答案 0 :(得分:1)
等效的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) }
}
}
请注意,代码使用SAM conversions两次,它们仅适用于在Java中声明的接口。对于匿名接口实现,Kotlin替代方案为function types或object expressions。