View Javadoc
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  }