- 表达式
private #{type} #{name};
- 以上部分在实际生成文件时,可能会如下
private int value;
- 定义在
#{}中表达式的可以基本的运算,如^*/+-&&||
private int age#{age + n};
- 表达式中可以使用函数,预定义函数目前仅有
toUpperCase()toLowerCase()firstUpperCase()firstLowerCase()
private int #{firstLowerCase(age)}
- 表达式中的字符串,不会求值,直接应用到结果中
private int #{"age" + age} // age 会求值,"age"直接作为字符串处理
- 语句块
!{file 文件名}文件块,其中定义的部分自动写入到指定的文件名中
!{file "target.java"}
class A {
}
!{end}
!{repeat var= collection=}循环语句块,迭代指定集合,循环生成代码块中的内容。
!{repeat var=p collection=definitions}
private #{p} = 1;
!{end}
// 生成内容
private a = 1;
private b = 1;
...
!{if x=x}!{elif x=x}!{else}条件语句块,根据条件生成对应的语句块
!{if a="name"}
private int a = 2;
!{elif a="value"}
private int a = 3;
!{else}
private int a = 4;
!{end}
- 函数处理器
public class MyFunctionProcessor implements FunctionProcessor {
@Override
public String processFunction(String s, List<String> list) {
}
}
#{toLowerCase(a)}
toLowerCase(a)
toUpperCase(a)
firstLowerCase(a)
firstUpperCase(a)
- 变量处理器
public class MyVariableProcessor implements VariableProcessor {
@Override
public String processVariable(String s) {
}
@Override
public Collection<String> processKeyCollection(String s) {
}
}