Разобрать JavaScript-подобный синтаксис для моих собственных методов Java - PullRequest
2 голосов
/ 27 августа 2011

По сути, я хочу иметь возможность анализировать JavaScript-подобный синтаксис.Например:

var results = system.function('example');  

if(results == "hello") {  
   console_print("ding dong.");  
}  

Таким образом, в основном вы получите его, результаты будут «строкой», а system.function вызовет метод Java, и эти результаты войдут в строку результатов.

Я хочу иметь возможность выполнять базовую математику и валидацию, но я хочу, чтобы это делалось на Java.Есть идеи?

Ответы [ 2 ]

1 голос
/ 27 августа 2011

Если вы хотите использовать JavaScript (не просто как в JavaScript ), а используете Java 1.6+, вы можете использовать Scripting API :

import javax.script.*;

public class Main {

  public static void main (String[] args) throws Exception {

    String source =
        "var system = new Array();                       \n" +
        "system['foo'] = function(s) { return 'hello'; } \n" +
        "                                                \n" +
        "var results = system.foo('example');            \n" +
        "                                                \n" +
        "if(results == \"hello\") {                      \n" +
        "  print(\"ding dong.\");                        \n" +
        "}                                               \n";

    ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript");
    engine.eval(source);
  }
}

который напечатает:

ding dong.

к консоли.

А чтобы вызвать методы Java из языка сценариев, вы можете попробовать BeanShell :

package test;

import bsh.Interpreter;

public class Main {

  public static void foo(Object param) {
    System.out.println("From Java, param=" + param);
  }

  public static void main (String[] args) throws Exception {

    Interpreter i = new Interpreter();
    i.eval("a = 3 * 5; test.Main.foo(a);");
  }
}

который напечатает:

From Java, param=15

JAR-интерпретатор ядра BeanShell занимает всего 143 КБ: более легкий, чем будет, IMO.

1 голос
/ 27 августа 2011

Я думаю, вы можете использовать Rhino для этого. Rhino - это движок JavaScript, который может быть встроен в Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...