2017-02-04 8 views
0

戻り値として配列を持つ関数を作成しようとしました。しかし、それは動作しません。Mozilla Rhinoで配列を返す関数を作る方法

あなたはこれについて考えていますか?

以下は私のコードです。

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

!出来た! – Devonnuri

答えて

0

arrayの次の例を確認してください。 THX @Aubin

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 
+0

NativeArrayがうまく機能します! Btw、thx非常に! – Devonnuri