【问题标题】:Passing variable arguments to a java function from javascript using GraalVM使用 GraalVM 从 javascript 将变量参数传递给 java 函数
【发布时间】:2019-04-19 15:15:12
【问题描述】:

我正在尝试调用 Corda RPC 中一个名为 startTrackedFlowDynamic 的函数,它接受 2 个参数: startTrackedFlowDynamic(logicType: Class<out FlowLogic<T>>, vararg args: Any?) 打包在一个 JAR 中

对这个函数的调用是从 Javascript 上下文(使用 GraalVM 来实现的)进行的,我想调用这个函数并将从请求对象获得的参数传递给它(比如说,即将到来来自 REST API)

示例: 如果请求包含数组[::InitiatorA, iouValue], 我想调用 startTrackedFlowDynamic 像: startTrackedFlowDynamic(::InitiatorA, iouValue)

如果请求包含数组[::InitiatorB, abc, xyz] 我想调用 startTrackedFlowDynamic 像: startTrackedFlowDynamic(::InitiatorB, abc, xyz)

如果请求包含数组[::InitiatorC] 我想调用 startTrackedFlowDynamic 像: startTrackedFlowDynamic(::InitiatorC)

TLDR:我想将其作为通用 API,而不是为每个不同的 Flow 调用重写。 我希望能够将来自请求对象的动态数量的参数传递给这个函数,而不是硬编码固定数量的参数,并且在参数数量发生变化时必须更新它

我要复制的行为的示例

var func = function () {
    console.log(arguments.length);
    for (var i = 0; i < arguments.length; i++) {
        console.log(arguments[i]);
    }
};

func.apply(null, ['::InitiatorA', 'abc', 'xyz'])

有什么建议吗?

【问题讨论】:

  • 我建议在示例中使用 console.log 而不是 alert - 它不那么烦人

标签: javascript java node.js corda graalvm


【解决方案1】:

它似乎适用于以下 JavaScript 语法

var argsArray = ['::InitiatorA', 'abc', 'xyz']
startTrackedFlowDynamic(...argsArray)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-23
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    • 2016-08-21
    • 2015-01-05
    • 2015-05-02
    相关资源
    最近更新 更多