001 package serp.util; 002 003 /** 004 * Number utilities. 005 * 006 * @author Abe White 007 */ 008 public class Numbers { 009 private static final Integer INT_NEGONE = new Integer(-1); 010 private static final Long LONG_NEGONE = new Long(-1); 011 private static final Integer[] INTEGERS = new Integer[50]; 012 private static final Long[] LONGS = new Long[50]; 013 014 static { 015 for (int i = 0; i < INTEGERS.length; i++) 016 INTEGERS[i] = new Integer(i); 017 for (int i = 0; i < LONGS.length; i++) 018 LONGS[i] = new Long(i); 019 } 020 021 /** 022 * Return the wrapper for the given number, taking advantage of cached 023 * common values. 024 */ 025 public static Integer valueOf(int n) { 026 if (n == -1) 027 return INT_NEGONE; 028 if (n >= 0 && n < INTEGERS.length) 029 return INTEGERS[n]; 030 return new Integer(n); 031 } 032 033 /** 034 * Return the wrapper for the given number, taking advantage of cached 035 * common values. 036 */ 037 public static Long valueOf(long n) { 038 if (n == -1) 039 return LONG_NEGONE; 040 if (n >= 0 && n < LONGS.length) 041 return LONGS[(int) n]; 042 return new Long(n); 043 } 044 }