在java中如何调用这个构造函数?

在java中如何调用这个构造函数?,java,kotlin,constructor,callback,functional-interface,Java,Kotlin,Constructor,Callback,Functional Interface,我有一个用java导入的library.aar文件。该类是具有构造函数的LSPatch public final class LSPatch public constructor(options: org.json.JSONObject, onDiscovery: (org.json.JSONObject) -> kotlin.Unit, onData: (org.json.JSONObject) -> kotlin.Unit, onStatus: (org.json.JSONObj

我有一个用java导入的library.aar文件。该类是具有构造函数的LSPatch

public final class LSPatch public constructor(options: org.json.JSONObject, onDiscovery: (org.json.JSONObject) -> kotlin.Unit, onData: (org.json.JSONObject) -> kotlin.Unit, onStatus: (org.json.JSONObject) -> kotlin.Unit) {....}
现在,当我需要创建类“LSPatch”的对象时,我不知道如何在java源代码中调用这个构造函数。 就像我想创造的一样

LSPatch lspatch=new LSPatch(...);
当我尝试这样做时,它显示:
我无法将其与java联系起来。谁能帮帮我吗。请告诉我这些参数是什么,以及如何实际调用构造函数。

您可以通过将执行SAM转换的java lambda传递到kotlin的函数接口来创建实例

LSPatch LSPatch=新LSPatch 新的JsonObject,//选项 jsonObject->{//onDiscovery //lambda body,回拨你的电话 返回Unit.INSTANCE; }, jsonObject->{//onData //lambda body,回拨你的电话 返回Unit.INSTANCE; }, jsonObject->{//onStatus //lambda body,回拨你的电话 返回Unit.INSTANCE; } ;
您可以使用Java中的lambdas作为第2、第3和第4个参数:

LSPatch lspatch = new LSPatch(
            new JSONObject(),
            jsonObject -> {
                // do your stuff
                return null;
            },
            jsonObject -> {
                // do your stuff
                return null;
            },
            jsonObject -> {
                // do your stuff
                return null;
            }
);

函数接口与Java兼容Lambdac u共享一个片段,在该片段中,您正在使用Java中的此构造函数创建对象?表示无法解析此sysmbol单元。如何在java中导入类型单位?它是void right的kotlin数据类型?@SayanSen import kotlin.Unit;“科特林”也是这样说的。符号无法解析错误。在执行此操作之前,我是否必须导入或包含其他内容?@SayanSen-wird,似乎库没有附带依赖项,您可能必须包含自己。在build.gradle插件{id'org.jetbrains.kotlin.jvm'version 1.3.72}依赖项{implementationorg.jetbrains.kotlin:kotlin stdlib}中,我将插件块粘贴到我的应用程序级build.gradle文件中,但它说无法编译编译文件,启动失败:仅编译文件buildscript{}和其他插件{}在插件{}块之前允许使用脚本块,不允许使用其他语句。谢谢,这要简单得多