2010-07-27 4 views
0

Voici un exemple de code.Comment puis-je réduire ce code de script?

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; 
    } 
} 

Et ceci est un exemple de script à exécuter.

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

Comment réduire script

setValue1(2); 
setValue2(5); 

Edit: Je veux exécuter les scripts javascript dans la méthode d'exécution() et raccourcir script.

+0

Vous devez avoir une instance de votre classe avant de pouvoir appelez des méthodes non statiques. C'est comme ça que fonctionne la POO. Le framework de test instancie un test vers une variable "p" et appelle ensuite les méthodes 'setValue1()' et 'setValue2()'. Je ne vois pas comment vous pourriez réduire le script à moins. –

+0

@Cory Larson: p.setValue1 (2); ... est un script javascript à exécuter. Désolé si je vous fais mal comprendre. – Alcaros

+0

Oui, je comprends. JavaScript a encore des objets. Votre ScriptEngineManager crée une instance de 'Test' et l'affecte à' p' dans cette ligne: 'this.engine.put (" p ", this);'. Par conséquent, vous devez spécifier le nom de la variable de classe dans votre script de test. –

Répondre

0

Si «j'étais toi »: P ... je vais faire ajouter un nouveau constructeur ...

quelque chose comme:

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

Je veux exécuter ces scripts javascript dans la méthode execute() et rendre le script plus court. Désolé si je vous fais mal comprendre – Alcaros