2015-12-09 8 views
0

Кто-нибудь знает, как выполнять математические операции в codeModel? Я был везде и не могу понять. У меня есть сгенерированный класс, и я хочу, например. добавьте 2 переменных (я сделал это с помощью Long.staticInvoke("sum"), но я имею в виду добавление, вычитание, умножение, деление и все такое). Пример вывода я хочу добиться:Java sun CodeModel математические операции

class C { 
    int a; 
    int b; 
    C() { 
      a=5; 
      b=7; 
    } 
    int foo() { 
     return (a+b)/4*7; 
    } 
} 

У меня есть что-то вроде этого:

try { 
      String className = "C"; 
      JCodeModel model = new JCodeModel(); 
      JDefinedClass jdc = model._class(className); 

      JFieldVar a = jdc.field(0, Integer.TYPE, "a"); 
      JFieldVar b = jdc.field(0, Integer.TYPE, "b"); 
      JMethod constructor = jdc.constructor(0); 
      constructor.body().assign(a, JExpr.lit(5)); 
      constructor.body().assign(b, JExpr.lit(7)); 

      JMethod foo = jdc.method(0,Double.TYPE,"foo"); 
      foo.body()._return(/* WHAT GOES HERE? */); 

      File file = new File("./src/types/"); 
      file.mkdirs(); 
      model.build(file); 
     } catch(Exception e) { 
      e.printStackTrace(); 
     } 

любые идеи?

ответ

0

Класс JOp поможет вам там. (a+b)/4*7 генерируется следующим образом:

JOp.div(JOp.plus(a, b), JOp.mul(JExpr.lit(4), JExpr.lit(7))) 
Смежные вопросы