一个用来保存参数的容器类
来源:互联网 发布:淘宝免费课程视频 编辑:程序博客网 时间:2024/05/21 07:53
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();
}
}
- 一个用来保存参数的容器类
- 一个用来保存参数的容器类
- std::string 可以用来作为一个很好的char容器
- 软件保存复杂参数到文件的一个实例,容器相关
- 一个用来运行其他文件并传递参数的命令
- 一个用来翻转、旋转的矩阵类
- Delphi: 一个用来控制系统音量的类
- 一个用来翻转、旋转的矩阵类
- Java定义一个用来保存全局字符串的properties文件并用ResourceBundle读取它
- 这是用来保存模版的
- 一个很好的define,可以用来测试变长参数的函数
- Postman 如何传入一个数组形式的参数用来测试URL路由地址
- 封装的一个用来下载图片的类
- 一个用来测量时间的类,比较精确.
- 一个用来监听指定目录下的文件系统类FileSystemWatcher
- 一个用来判断是长按手势的辅助类
- [VB.NET]DLL中,怎样写一个文件用来保存每次访问DLL后变量的自增1
- 安卓中使用SharedPreferences实现软件参数的保存和从另外一个资源获取保存结果
- VOA特别英语节目官方词汇表汇总
- 海量数据存储过程
- Thinking in C++ 阅读笔记(第三章)
- asp.net和javascript怎样结合
- SqlDataReader 类
- 一个用来保存参数的容器类
- Jdeveloper 与 CVS集成开发
- 两条关于生成排名的SQL语句
- Java程序员的存储过程
- 结合MSHTML与WebBrowser生成美观实用的WinForm应用程序(By Lostinet)
- 探讨界面工作人员与后台程序编写人员的合作
- 我终于理解了JSP 的分页了
- 把抽象在往前走一步
- 请问在C#中怎样调用netmeeting sdk?急急急急急急急急急急