一个用来保存参数的容器类

80酷酷网    80kuku.com

import java.util.*;

/** * 提供一个保存参数的容器,用来给那些参数多、可选参数多、参数易变的方法提供参数读取能力。 * 直接使用Map等类对于数据类型处理不是方便。本类提供常用数据类型的读取方法。用法示例:
 * port = args.get("port",8080);
 * 放入Map中的port值可以是"8443"或new Integer(8443)或其他任何类型,只要toString() * 能够解析出一个整数。 * author sunlen * version 1.0 */public class Args{    /** 一个常量空参数表。用于传递空参数,该参数列表已经锁定,不能修改。*/    public static final Args EMPTY = new Args().lock();

    /** 参数列表是否已经锁定,锁定后的参数列表将只读。*/    boolean locked;

    /** Map保存的参数。*/    Map args;

    /** 创建空参数列表。*/    public Args()    {        this(new HashMap());    }

    /**     * 用Map创建参数。     * param theArgs 保存参数的Map对象。     */    public Args(Map theArgs)    {        if (theArgs==null)        {            throw new NullPointerException("argument is null");        }        args = theArgs;    }

    /**     * 取得字符串参数的方法。     * param key 参数名。     * param def 参数值。     */    public String get(String key,String def)    {        try        {            return args.get(key).toString();        }        catch (Exception ex)        {            return def;        }    }

    /**     * 取得整数参数的方法。     * param key 参数名。     * param def 参数值。     */    public int get(String key,int def)    {        try        {            return Integer.parseInt(args.get(key).toString());        }        catch (Exception ex)        {            return def;        }    }

    /**     * 取得长整数参数的方法。     * param key 参数名。     * param def 参数值。     */    public long get(String key,long def)    {        try        {            return Long.parseLong(args.get(key).toString());        }        catch (Exception ex)        {            return def;        }    }

    /**     * 取得浮点数参数的方法。     * param key 参数名。     * param def 参数值。     */    public float get(String key,float def)    {        try        {            return Float.parseFloat(args.get(key).toString());        }        catch (Exception ex)        {            return def;        }    }

    /**     * 取得布尔参数的方法。只有"true"解析成true其他解析成false。     * param key 参数名。     * param def 参数值。     */    public boolean get(String key,boolean def)    {        try        {            return ("true".equals(args.get(key)));        }        catch (Exception ex)        {            return def;        }    }

    /**     * 取得原始对象类型。     * param key 参数名。     * param def 参数缺省值。     */    public Object get(String key,Object def)    {        try        {            Object obj = args.get(key);            if (obj==null)            {                return def;            }            return obj;        }        catch (Exception ex)        {            return def;        }    }

    /**     * 往当前参数表中添加一个参数。     * param key 参数名。     * param value 参数值。     * return 添加了新参数后的参数表(对象实例没有变)。     * exception UnsupportedOperationException 如果参数列表已经被锁定。     */    public Args set(String key,Object value)    {        if(locked)        {            throw new UnsupportedOperationException(                      "Args have locked,can modify");        }        args.put(key,value);        return this;    }

    /**     * 往当前参数表中添加一个参数。     * param key 参数名。     * param value 参数值。     * return 添加了新参数后的参数表(对象实例没有变)。     * exception UnsupportedOperationException 如果参数列表已经被锁定。     */    public Args set(String key,int value)    {        if(locked)        {            throw new UnsupportedOperationException(                  "Args have locked,can modify");        }        args.put(key,new Integer(value));        return this;    }

    /**     * 往当前参数表中添加一个参数。     * param key 参数名。     * param value 参数值。     * return 添加了新参数后的参数表(对象实例没有变)。     * exception UnsupportedOperationException 如果参数列表已经被锁定。     */    public Args set(String key,boolean value)    {        if(locked)        {            throw new UnsupportedOperationException(                                            "Args have locked,can modify");        }        args.put(key,new Boolean(value));        return this;    }

    /**     * 往当前参数表中添加一个参数。     * param key 参数名。     * param value 参数值。     * return 添加了新参数后的参数表(对象实例没有变)。     * exception UnsupportedOperationException 如果参数列表已经被锁定。     */    public Args set(String key,long value)    {        if(locked)        {            throw new UnsupportedOperationException(                  "Args have locked,can modify");        }        args.put(key,new Long(value));        return this;    }

    /**     * 往当前参数表中添加一个参数。     * param key 参数名。     * param value 参数值。     * return 添加了新参数后的参数表(对象实例没有变)。     * exception UnsupportedOperationException 如果参数列表已经被锁定。     */    public Args set(String key,float value)    {        if(locked)        {            throw new UnsupportedOperationException("Args have locked,can modify");        }        args.put(key,new Float(value));        return this;    }

    /**     * 往当前参数表中添加一个参数。     * param key 参数名。     * param value 参数值。     * return 添加了新参数后的参数表(对象实例没有变)。     * exception UnsupportedOperationException 如果参数列表已经被锁定。     */    public Args set(String key,double value)    {        if(locked)        {            throw new UnsupportedOperationException(                  "Args have locked,can modify");        }        args.put(key,new Double(value));        return this;    }

    /**     * 锁定参数列表。锁定后该参数列表将变成只读的,任何对set()方法的调用都将抛出     * UnsupportedOperationException异常。已经锁定的参数表再次调用本方法没有任何影响。     * return 锁定后的参数列表(对象实例没有变)。     */    public Args lock()    {        locked = true;        return this;    }

    /**     * 参数列表的字符串描述。     * return 所有参数值。     */    public String toString()    {        return args.toString();    }}



分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: