代码模板
Jul 11, 2017 10:17:31 PM
作者:zozoh
什么是代码模板
通过 Java 提供的 String.format() 方法,可以很方便的声明字符串模板,以及占位符。但是,它不方便的是,如果我的字符串模板两个占位符希望的是同一个值:
XXXXXXXX $A XXXXXX $B XXXXXX $A XXXXX
通过 String.format() 需要这么写:
String.format("XXXXXXXX %s XXXXXX %s XXXXXX %s XXXXX", "TxtA","TxtB","TxtA");
或者用位置参数
String.format("XXXXXXXX %1$s XXXXXX %2$s XXXXXX %1$s XXXXX", "TxtA","TxtB");
并且你不设值,或者设置的值少于声明的数量, 会被无情抛错。
Nutz 的代码模板
接上例,你可以这么写:
Segment seg = new CharSegment("XXXXXXXX ${A} XXXXXX ${B} XXXXXX ${A} XXXXX");
seg.set("A", "TxtA").set("B", "TxtB");
System.out.println(seg.toString());
- 无需重复设置占位符
- 自动通过 Castors 将你的对象转成字符串
- 不设值的占位符,输出时会被空串 (
""
)填充
什么时候使用 Nutz 的代码模板
- 如果你的代码模板比较简单,还是推荐使用 String.format
- 如果你的代码模板比较复杂,有重复的占位符,或者可能有重复的占位符,推荐使用 CharSegment
- 你需要知道
- 如果多线程共享一个 CharSegment,那么最好使用前复制一份:
Segment newSeg = seg.born();
newSeg.set("A",XXX").set("B",XXX") ....
- 否则通常会有多线程内存共享的问题。
- CharSegment 解析的速度很快
- Clone 方法对多线程是不安全的,因为每个占位符的值不会被深层 clone
Segment newSeg = seg.clone();
本页面的文字允许在知识共享 署名-相同方式共享 3.0协议和GNU自由文档许可证下修改和再使用。