?? args.java
字號(hào):
package com.huawei.icd30.agt.util;
import java.util.*;
/**
* 提供一個(gè)保存參數(shù)的容器,用來(lái)給那些參數(shù)多、可選參數(shù)多、參數(shù)易變的方法提供參數(shù)讀取能力。
* 直接使用Map等類(lèi)對(duì)于數(shù)據(jù)類(lèi)型處理不是方便。本類(lèi)提供常用數(shù)據(jù)類(lèi)型的讀取方法。用法示例:<br>
* port = args.get("port",8080);<br>
* 放入Map中的port值可以是"8443"或new Integer(8443)或其他任何類(lèi)型,只要toString()
* 能夠解析出一個(gè)整數(shù)。
* @author 李大偉
* @version 1.0
*/
public class Args
{
/** 一個(gè)常量空參數(shù)表。用于傳遞空參數(shù),該參數(shù)列表已經(jīng)鎖定,不能修改。*/
public static final Args EMPTY = new Args().lock();
/** 參數(shù)列表是否已經(jīng)鎖定,鎖定后的參數(shù)列表將只讀。*/
boolean locked;
/** Map保存的參數(shù)。*/
Map args;
/** 創(chuàng)建空參數(shù)列表。*/
public Args()
{
this(new HashMap());
}
/**
* 用Map創(chuàng)建參數(shù)。
* @param theArgs 保存參數(shù)的Map對(duì)象。
*/
public Args(Map theArgs)
{
if (theArgs==null)
{
throw new NullPointerException("argument is null");
}
args = theArgs;
}
/**
* 取得字符串參數(shù)的方法。
* @param key 參數(shù)名。
* @param def 參數(shù)值。
*/
public String get(String key,String def)
{
try
{
return args.get(key).toString();
}
catch (Exception ex)
{
return def;
}
}
/**
* 取得整數(shù)參數(shù)的方法。
* @param key 參數(shù)名。
* @param def 參數(shù)值。
*/
public int get(String key,int def)
{
try
{
return Integer.parseInt(args.get(key).toString());
}
catch (Exception ex)
{
return def;
}
}
/**
* 取得長(zhǎng)整數(shù)參數(shù)的方法。
* @param key 參數(shù)名。
* @param def 參數(shù)值。
*/
public long get(String key,long def)
{
try
{
return Long.parseLong(args.get(key).toString());
}
catch (Exception ex)
{
return def;
}
}
/**
* 取得浮點(diǎn)數(shù)參數(shù)的方法。
* @param key 參數(shù)名。
* @param def 參數(shù)值。
*/
public float get(String key,float def)
{
try
{
return Float.parseFloat(args.get(key).toString());
}
catch (Exception ex)
{
return def;
}
}
/**
* 取得布爾參數(shù)的方法。只有"true"解析成true其他解析成false。
* @param key 參數(shù)名。
* @param def 參數(shù)值。
*/
public boolean get(String key,boolean def)
{
try
{
return ("true".equals(args.get(key)));
}
catch (Exception ex)
{
return def;
}
}
/**
* 取得原始對(duì)象類(lèi)型。
* @param key 參數(shù)名。
* @param def 參數(shù)缺省值。
*/
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;
}
}
/**
* 往當(dāng)前參數(shù)表中添加一個(gè)參數(shù)。
* @param key 參數(shù)名。
* @param value 參數(shù)值。
* @return 添加了新參數(shù)后的參數(shù)表(對(duì)象實(shí)例沒(méi)有變)。
* @exception UnsupportedOperationException 如果參數(shù)列表已經(jīng)被鎖定。
*/
public Args set(String key,Object value)
{
if(locked)
{
throw new UnsupportedOperationException(
"Args have locked,can modify");
}
args.put(key,value);
return this;
}
/**
* 往當(dāng)前參數(shù)表中添加一個(gè)參數(shù)。
* @param key 參數(shù)名。
* @param value 參數(shù)值。
* @return 添加了新參數(shù)后的參數(shù)表(對(duì)象實(shí)例沒(méi)有變)。
* @exception UnsupportedOperationException 如果參數(shù)列表已經(jīng)被鎖定。
*/
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;
}
/**
* 往當(dāng)前參數(shù)表中添加一個(gè)參數(shù)。
* @param key 參數(shù)名。
* @param value 參數(shù)值。
* @return 添加了新參數(shù)后的參數(shù)表(對(duì)象實(shí)例沒(méi)有變)。
* @exception UnsupportedOperationException 如果參數(shù)列表已經(jīng)被鎖定。
*/
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;
}
/**
* 往當(dāng)前參數(shù)表中添加一個(gè)參數(shù)。
* @param key 參數(shù)名。
* @param value 參數(shù)值。
* @return 添加了新參數(shù)后的參數(shù)表(對(duì)象實(shí)例沒(méi)有變)。
* @exception UnsupportedOperationException 如果參數(shù)列表已經(jīng)被鎖定。
*/
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;
}
/**
* 往當(dāng)前參數(shù)表中添加一個(gè)參數(shù)。
* @param key 參數(shù)名。
* @param value 參數(shù)值。
* @return 添加了新參數(shù)后的參數(shù)表(對(duì)象實(shí)例沒(méi)有變)。
* @exception UnsupportedOperationException 如果參數(shù)列表已經(jīng)被鎖定。
*/
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;
}
/**
* 往當(dāng)前參數(shù)表中添加一個(gè)參數(shù)。
* @param key 參數(shù)名。
* @param value 參數(shù)值。
* @return 添加了新參數(shù)后的參數(shù)表(對(duì)象實(shí)例沒(méi)有變)。
* @exception UnsupportedOperationException 如果參數(shù)列表已經(jīng)被鎖定。
*/
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;
}
/**
* 鎖定參數(shù)列表。鎖定后該參數(shù)列表將變成只讀的,任何對(duì)set()方法的調(diào)用都將拋出
* UnsupportedOperationException異常。已經(jīng)鎖定的參數(shù)表再次調(diào)用本方法沒(méi)有任何影響。
* @return 鎖定后的參數(shù)列表(對(duì)象實(shí)例沒(méi)有變)。
*/
public Args lock()
{
locked = true;
return this;
}
/**
* 參數(shù)列表的字符串描述。
* @return 所有參數(shù)值。
*/
public String toString()
{
return args.toString();
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -