在 ES4X/Graal 中使用重载参数扩展 Java 类和覆盖方法

问题描述

我正在尝试使用 ES4X/Graal 在 JavaScript 项目中扩展 Java 类。我想要扩展的类具有我需要覆盖的重载参数的方法。我知道您可以通过使用方括号表示法并指定类型(下面的示例)来调用特定的 Java 方法,但显然,根据 Graal/Oracle/Nashorn 文档,在覆盖时无法指定参数类型。因此,如果您有以下情况:

package com.mycomp;

class A {
    public void method(String parameter) {...}
    public void method(int parameter) {...}
}

您可以像这样在 JavaScript 中调用任一方法:

var a = Java.type("com.mycomp.A");

a["method(String)"]("Some string parameter")
a["method(int)"](42)
a.method(stringOrIntParam)

但是,在扩展时,您只能执行以下操作:

var ClassAFromJava = Java.type("com.mycom.A");
var MyJavaScriptClassA = Java.extend(ClassAFromJava,{
    method: function(stringOrIntParam) {...}
}

我希望能够仅扩展 method(...) 中的一种,嗯,方法。那么具有不同返回类型的重载方法呢?

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)