2010-07-27 87 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