|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
import java.util.*; /** * 提供一个保存参数的容器,用来给那些参数多、可选参数多、参数易变的方式提供参数读取能力。 * 直接使用Map等类对于数据类型处理不是方便。本类提供常用数据类型的读取方式。用法示例:<br> * port = args.get("port",8080);<br> * 放入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(); }} 返回类别: 教程 上一教程: java实现屏幕取色 下一教程: 看看String类的构造方式 您可以阅读与"一个用来保存参数的容器类"相关的教程: · 一个JDBC-ODBC桥的字符集参数的例子。 · 一个用来访问http服务器的东西。功能类似于java.net中的那个。但要强。 · 一个用Class.forName()做的动态装载小东东,有助于理解Class.forName()的应用 · 一个用JSP做的日历 · javascript向jsp传递参数的一种手段:使用xmlhttp对象 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |