代码模板

Jul 11, 2017 10:17:31 PM

作者:zozoh

什么是代码模板

通过 Java 提供的 String.format() 方法,可以很方便的声明字符串模板,以及占位符。但是,它不方便的是,如果我的字符串模板两个占位符希望的是同一个值:

  1. XXXXXXXX $A XXXXXX $B XXXXXX $A XXXXX

通过 String.format() 需要这么写:

  1. String.format("XXXXXXXX %s XXXXXX %s XXXXXX %s XXXXX", "TxtA","TxtB","TxtA");

或者用位置参数

  1. String.format("XXXXXXXX %1$s XXXXXX %2$s XXXXXX %1$s XXXXX", "TxtA","TxtB");

并且你不设值,或者设置的值少于声明的数量, 会被无情抛错。

Nutz 的代码模板

接上例,你可以这么写:

  1. Segment seg = new CharSegment("XXXXXXXX ${A} XXXXXX ${B} XXXXXX ${A} XXXXX");
  2. seg.set("A", "TxtA").set("B", "TxtB");
  3. System.out.println(seg.toString());
  • 无需重复设置占位符
  • 自动通过 Castors 将你的对象转成字符串
  • 不设值的占位符,输出时会被空串 ("")填充

什么时候使用 Nutz 的代码模板

  • 如果你的代码模板比较简单,还是推荐使用 String.format
  • 如果你的代码模板比较复杂,有重复的占位符,或者可能有重复的占位符,推荐使用 CharSegment
  • 你需要知道
    • 如果多线程共享一个 CharSegment,那么最好使用前复制一份:
  1. Segment newSeg = seg.born();
  2. newSeg.set("A",XXX").set("B",XXX") ....
  1. - 否则通常会有多线程内存共享的问题。
  • CharSegment 解析的速度很快
  • Clone 方法对多线程是不安全的,因为每个占位符的值不会被深层 clone
  1. Segment newSeg = seg.clone();

本页面的文字允许在知识共享 署名-相同方式共享 3.0协议GNU自由文档许可证下修改和再使用。

原文: http://nutzam.com/core/lang/segment.html