kotlin - Kotlin中的Jinq-如何将Lambda转换为Java SerializedLambda?

标签 kotlin kotlin-interop

我可以在Kotlin中拥有可序列化的lambda吗?我正在尝试使用Kotlin的Jinq库,但是它需要可序列化的lambda。有没有语法使之成为可能?

更新:

我的代码:

var temp=anyDao.streamAll(Task::class.java)
   .where<Exception,Task> { t->t.taskStatus== TaskStatus.accepted }
   .collect(Collectors.toList<Task>());

我收到此错误:
Caused by: java.lang.IllegalArgumentException: 
Could not extract code from lambda. 
This error sometimes occurs because your lambda references objects that aren't Serializable.

lambda中引用的所有对象都是可序列化的(代码导致Java中没有错误)。

更新2

调试后,似乎kotlin lambda并未转换为Jinq要求从中获取信息的java.lang.invoke.SerializedLambda。因此,问题在于如何将其转换为SerializedLambda。

最佳答案

我是Jinq的制造商。我还没有时间查看Kotlin支持,但是根据您的描述,我假设Kotlin将其lambda编译为实际的类或其他内容。因此,Jinq可能需要一些特殊的代码来破解开放的Kotlin lambda,并且还可能需要特殊的代码来处理生成的代码中的任何异常Kotlin-ism。 Jinq应该能够处理它,因为先前已对其进行了改进以处理Scala lambda。

如果您在Jinq github上提出有关此问题的信息,以及一个小的Kotlin示例(以源文件和.class文件的形式),那么我可以快速了解可能涉及的内容。如果很小,我可以进行更改。不幸的是,如果看起来需要做很多工作,我认为我真的没有理由为在Jinq中添加Kotlin支持投入大量资源。

关于kotlin - Kotlin中的Jinq-如何将Lambda转换为Java SerializedLambda?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40064479/

相关文章:

android - Firebase isEmailVerified 无法正常工作 kotlin android

Android - Kotlin - 对象必须声明为抽象或实现抽象成员

kotlin - `var allByDefault: Int ?`会导致错误吗?

java - 带有 Spring Boot 2 错误的 Kotlin JPA 插件

kotlin - 从 Java 调用 Kotlin 内联函数

android - 纯 kotlin 模块中的 "Empty test suite."。 (斯波克/安卓)

kotlin - Kotlin 中 CompletableFuture 异常方法的使用

Kotlin:如何将数组传递给 Java 注释

android - Kotlin 文件无法使用 R.java

java - Kotlin - 将可见性属性赋予伴随对象