gpt4 book ai didi

Java 脚本引擎类实例化

转载 作者:行者123 更新时间:2023-11-29 22:29:17 24 4
gpt4 key购买 nike

我正在尝试在我们的应用程序中实现脚本端点,但我遇到了一个问题:是否可以实例化一个对象,该对象是具有已实现方法的抽象类的实例?在 Java 中它看起来像:

SimpleObject obj = new SimpleObject("contructor arg0") {    
public void doCustomAction() {
System.out.println("Action");
}
}

SimpleObject 是一个抽象类,有抽象方法 doCustomAction如何通过 Java 脚本引擎做这样的事情?我正在尝试通过以下方式进行:

obj1 = new SimpleObject("value1") {
doCustomAction : function() {
//Do smth.
}
}

但是引擎抛出这样的异常:

javax.script.ScriptException: sun.org.mozilla.javascript.internal.EvaluatorException:
error instantiating (JavaAdapter: first arg should be interface Class (<Unknown source>#1)):
class SimpleObject is interface or abstract (<Unknown source>#1) in <Unknown source> at line number 1

最佳答案

您可以在 Java 中扩展您的抽象类,例如 MouseAdapter处理它的接口(interface),然后在 javascript 中使用这个“适配器”,例如:

在 Java 中:

public abstract class SimpleObject {
abstract void doCustomAction();
}
public class SimpleObjectAdapter extends SimpleObject {
void doCustomAction(){}
}

在 JavaScript 中:

obj1 = new JavaAdapter(SimpleObjectAdapter,{
doCustomAction : function() {
//Do smth.
}
});

编辑:您可以在没有“适配器”的情况下做到这一点,只需执行以下操作:

obj1 = new JavaAdapter(Packages.SimpleObject, {
doCustomAction: function(){
//Do smth.
}
});

关于Java 脚本引擎类实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7821048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com