001package serp.util;
002
003/**
004 * Number utilities.
005 *
006 * @author Abe White
007 */
008public 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}