所以说我有一些简单的数据类,像这样:
data class Transaction(
val time: Long,
val sender: String,
val data: ByteArray
)
在Kotlin中,我定义了以下方法:
fun handleTransaction(transactionGetter: ()->Transaction) {
// do something
}
如何从Java调用此方法?
我尝试过尝试制作Java Lambda,但无法弄清楚。它告诉我该参数应该是a,Function0<Transaction>
但是我不太确定如何定义它。
好的,我知道可以做到这一点:
handleTransaction(new Function0<Transaction>() {
@Override
public Transaction invoke() {
// handle getting transaction
}
});
这真的是正确的方法吗?这很丑。
如果您的目标至少是JDK 8,则可以执行此操作(如果handleTransaction
在file中定义了功能Transaction.kt
):
public static void main(String[] args) {
TransactionKt.handleTransaction(() -> new Transaction(
Instant.now().toEpochMilli(), "system", new byte[0]));
}
如果您将目标锁定在JDK 8以下,那么除了已经找到的方法之外,别无其他方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句