2010-07-27 84 views
0

以下是示例代码。如何缩小此脚本代码

package base; 

import javax.script.ScriptEngine; 
import javax.script.ScriptEngineManager; 
import javax.script.ScriptException; 

public class Test { 

    int value1; 
    ScriptEngine engine; 

    public Test(){ 
     this.engine = new ScriptEngineManager().getEngineByName("js"); 
     this.engine.put("p",this); 
    } 

    public boolean execute(String script){ 
     try { 
      if (script != ""){ 
       this.engine.eval(script); 
      } 
      return true; 
     } catch (ScriptException e) { 
      e.printStackTrace(); 
      return false; 
     } 
    } 

    public void setValue1(int v){ 
     this.value1 = v; 
    } 

    public void setValue2(int v){ 
     this.value2 = v; 
    } 
} 

而这是要执行的示例脚本。

p.setValue1(2); 
p.setValue2(5); 

如何减少脚本

setValue1(2); 
setValue2(5); 

编辑:我想运行JavaScript的那些方法中执行脚本(),使脚本更短。

+0

你之前,你可以有你的类的实例调用它的非静态方法。这就是OOP的工作原理。测试框架将一个Test实例化为一个变量“p”,随后调用其上的setValue1()和setValue2()方法。我看不出你能如何减少脚本的数量。 – 2010-07-27 02:08:16

+0

@Cory Larson:p.setValue1(2); ...是要执行的JavaScript脚本。对不起,如果我让你误解。 – Alcaros 2010-07-27 02:17:54

+0

是的,我明白了。 JavaScript仍然有对象。你的'ScriptEngineManager'创建一个'Test'的实例,并将其赋值给'p':'this.engine.put(“p”,this);'。因此,您必须在测试脚本中指定类变量名称。 – 2010-07-27 02:37:05

回答

0

如果“我是你”:P ...我会做添加一个新的构造......

类似:

public Test(int value1, int value2){ 
    super(); 
    this.value1 = value1; 
    this.value2 = value2; 
} 
+0

我想在execute()方法中运行这些JavaScript脚本并缩短脚本。对不起,如果我让你误解 – Alcaros 2010-07-27 02:18:44