1
2 package eu.simuline.util;
3
4 import java.lang.ref.WeakReference;
5
6 /**
7 * Collection of static methods related to strings.
8 * This class is required because class {@link String} is declared final.
9 */
10 public abstract class Strings {
11
12 /* -------------------------------------------------------------------- *
13 * fields. *
14 * -------------------------------------------------------------------- */
15
16 /**
17 * An ever growing buffer of blanks used by {@link #getBlanks(int)}.
18 */
19 private static WeakReference<StringBuilder> bLANKS =
20 new WeakReference<StringBuilder>(new StringBuilder());
21
22
23 /* -------------------------------------------------------------------- *
24 * methods. *
25 * -------------------------------------------------------------------- */
26
27 /**
28 * Returns a string consisting of the given number of blanks.
29 */
30 public static String getBlanks(int num) {
31 StringBuilder blanks = bLANKS.get();
32 if (blanks == null) {
33 blanks = new StringBuilder();
34 bLANKS = new WeakReference<StringBuilder>(blanks);
35 }
36
37 while (blanks.length() < num) {
38 blanks.append(' ');
39 }
40 assert blanks.length() >= num;
41
42 return blanks.substring(0, num);
43 }
44 }