如何在Mozilla Rhino中用数组作为返回值创建一个函数



我试图创建一个将数组作为返回值的函数。但是,它不起作用。

你对此有任何想法吗?

这是我下面的代码。

@JSFunction
public double[] getLocation() {
    double[] array = {253.1, 152.0, -32.5};
    return array;
}

检查以下示例中的数组。

import java.lang.reflect.InvocationTargetException;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Scriptable;
import org.mozilla.javascript.ScriptableObject;
import org.mozilla.javascript.annotations.JSFunction;
public class Main {
    public static void main(String[] args) {
        Context cx = Context.enter();
        System.out.println("Started : " + ArrayTest.class.getSimpleName());
        try {
            Scriptable scope = cx.initStandardObjects();
            ScriptableObject.defineClass(scope, ArrayTest.class);
            String testCode = "new ArrayTest().getLocation().join(',');";
            Object result = cx.evaluateString(scope, testCode, "<cmd>", 1, null);
            System.err.println(Context.toString(result));
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        } finally {
            Context.exit();
        }
    }
    public static class ArrayTest extends ScriptableObject {
        @JSFunction
        public double[] getLocation() {
            double[] array = {253.1, 152.0, -32.5};
            return array;
        }
        @Override
        public String getClassName() {
            return getClass().getSimpleName();
        }
    }
}

输出

Started : ArrayTest
253.1,152,-32.5

最新更新