gpt4 book ai didi

java - 如何在 Nashhorn JavaScript 中扩展 Java 类并添加类成员变量

转载 作者:行者123 更新时间:2023-12-03 11:47:19 26 4
gpt4 key购买 nike

我尝试创建一个扩展 Java 类的类的实例,并在该实例中添加一些类成员变量。这是我的尝试:

var ui = Java.extend(javax.swing.JPanel, { 
cb : new JCheckBox("A checkbox", true),
});

但是,Nashorn 解释器会抛出此错误:“TypeError:函数 noSuchMethod() { [native code] } 不是构造函数”

我做错了什么?当我添加自定义类的实例(如 se.datadosen.util.Stopwatch)时,Nashorn 没有提示,但当我尝试添加 JCheckBox 时,它会抛出此错误。

(我知道组件是通过 .add() 调用添加到面板中的,但这个问题实际上是关于如何将类成员变量添加到子类中。

最佳答案

Java.extend 允许您将用 JavaScript 实现的方法添加到 Java 类中(实际上,是为了创建一个作为 Java 类的子类的新类)。它不允许您添加任意属性,至少根据文档是这样。请参阅The Nashorn Java API ,其中表示:

You can extend a class using the Java.extend() function that takes a Java type as the first argument and method implementations (in the form of JavaScript functions) as the other arguments." (emphasis added)

您正在尝试添加一个对象作为类的属性,至少按照目前编写代码的方式是这样。

关于java - 如何在 Nashhorn JavaScript 中扩展 Java 类并添加类成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25996675/

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