gpt4 book ai didi

java - 我如何为 Rhino 的 ScriptableObject 定义静态属性?

转载 作者:搜寻专家 更新时间:2023-11-01 03:14:53 26 4
gpt4 key购买 nike

Rhino 提供Scriptable 接口(interface)和ScriptableObject 辅助类来实现由java 对象支持的javascript 对象。

构造ScriptableObject时,其方法名称以jsFunction___jsStaticFunction___jsGet___开头>jsSet___, jsConstructor 是自动为javascript对象定义的。通过这种方式,您可以定义函数、静态函数、实例属性(通过其访问器)和构造函数。

问题是如何定义静态属性?

我所说的静态属性是指构造函数上的属性,就像静态方法是构造函数上的方法一样。

目前我看到的唯一方法是使用finishInit 方法,并手动定义静态属性。但是什么是正确的方法呢?

最佳答案

目前我有这样的想法:

public class MyObject extends ScriptableObject {

@Override
public String getClassName() {
return "MyObject";
}

// define static properties
public static void finishInit(Scriptable scope, FunctionObject ctor, Scriptable proto) {
ctor.defineProperty("PROP_ONE", 1, READONLY);
ctor.defineProperty("PROP_TWO", 2, READONLY);
ctor.defineProperty("PROP_THREE", 3, READONLY);
}

还有其他方法吗?这种方式是否正确?

重要提示:请注意,当调用 finishInit 时,MyObject 的构造函数尚未在范围内定义。要定义作为 MyObject 实例的静态属性,请使用以下语法:

public static void finishInit(Scriptable scope, FunctionObject ctor, Scriptable proto) {
Context cx = Context.getCurrentContext();
Scriptable myObjectInstance = ctor.construct(cx, scope, new Object[] { /* args */ });
ctor.defineProperty("PROP", myObjectInstance, READONLY);
....
}

关于java - 我如何为 Rhino 的 ScriptableObject 定义静态属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1237072/

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