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

时间:2017-02-04 08:41:18

标签: javascript java arrays rhino

我尝试使用数组创建一个函数作为返回值。但是,它没有用。

你对此有任何想法吗?

以下是我的代码。

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

1 个答案:

答案 0 :(得分:0)

检查以下示例中的数组。

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