【问题标题】:Kotlin to Java without Kotlin Byte没有 Kotlin 字节的 Kotlin 到 Java
【发布时间】:2022-08-23 20:52:26
【问题描述】:

我希望将这个简单的类转换为 Java 。我将无法从什么 Android 中明确代码可以在 Java 中提出什么。

object Trinity {
    private val mHandler = Handler(Looper.getMainLooper())
    fun <T> callback(body: () -> T) {enter code here
        if (Looper.myLooper() == Looper.getMainLooper()) {
            body()
        } else {
            mHandler.post {
                body()
            }
        }
    }
}
  • 您无法准确转换该代码的哪一部分? (一般也是一个提示:不要尝试逐字翻译。弄清楚代码在做什么,然后写新的做那件事的目标语言的代码)
  • 标题似乎暗示了一些关于Byte 的内容,但我在这里的代码中没有看到任何这样的东西。你能澄清一下吗?

标签: java kotlin


【解决方案1】:

问题是回调,在 Java 中更常见的是使用 interface

public class Trinity<T>(callback: Callback) {

    private Handler mHandler = Handler(Looper.getMainLooper())    
    private Callback callback = callback


    //I don´t have more context, so please improve the naming
    public void callbackCaller() {
        if (Looper.myLooper() == Looper.getMainLooper()) {
            callback.onCall(body)
        } else {
            mHandler.post {
                callback.onCall(body)
            }
        }
    }
}

然后你的interface

public interface Callback<T> {
    public void onCall(T: body)
}

那么你可以使用匿名的interface 实现来调用你的类,或者从Trinity 的调用者那里实现接口。 This example should have both ways.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-14
    • 2016-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多