【java】枚举类的使用

来源:互联网 发布:教师网络课程心得 编辑:程序博客网 时间:2024/05/16 11:37

1.枚举类是jdk5后出来的特性,与传统的 public static final的好处是可以分类不同的常量,并方便实现从配置文件中取对应常量信息。

2.枚举类使用:

package common;


import java.util.HashMap;
import java.util.Map;


@SuppressWarnings("unchecked")
public enum LoginStatus 
{
LINK("linked",0),
BROKEN("broken",123);


private String name;
private int code;
private static Map nameMap = new HashMap();
private static Map codeMap = new HashMap();

static 
{
for(LoginStatus u :LoginStatus.values())
{
nameMap.put(u.getName(), u.getCode());
codeMap.put(u.getCode(), u.getName());
}
}


private LoginStatus(String name, int code) {
this.name = name;
this.code = code;
}


public String getName() {
return name;
}


public void setName(String name) {
this.name = name;
}


public int getCode() {
return code;
}


public void setCode(int code) {
this.code = code;
}


public static Map getNameMap() {
return nameMap;
}


public static void setNameMap(Map nameMap) {
LoginStatus.nameMap = nameMap;
}


public static Map getCodeMap() {
return codeMap;
}


public static void setCodeMap(Map codeMap) {
LoginStatus.codeMap = codeMap;
}

}


System.out.println("name: " + LoginStatus.LINK.getName());
System.out.println("code: " + LoginStatus.LINK.getCode());
System.out.println("codeMap: " + LoginStatus.getCodeMap().toString());
System.out.println("nameMap: " + LoginStatus.getNameMap().toString());


name: linked
code: 0
codeMap: {0=linked, 123=broken}
nameMap: {broken=123, linked=0}


3.实现从配置文件中取对应信息


/**
 * 
 */
package common;


import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;


/**
 *
 * 错误码枚举类
 * @author xiang
 * 2017年5月16日
 * 
 */
public enum ResultCode 
{
/**
* 成功码
*/
SUCCESS(0),

/**
* warn码
* @return 
*/
TEST(110);


private int code;
private String  message;
private static Properties prop = new Properties();
private static Map<String,String> mapCode = new HashMap<String,String>();

private ResultCode(int code) {
this.code = code;
}


private ResultCode(int code, String message) {
this.code = code;
this.message = message;
}
static 
{
ClassLoader sl = Thread.currentThread().getContextClassLoader();
URL url = sl.getResource("Error_message.properties");
try {
InputStream is = url.openStream();

prop.load(is);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

for(ResultCode u : ResultCode.values())
{
mapCode.put(String.valueOf(u.getCode()), prop.getProperty(String.valueOf(u.getCode())));
}
}
public int getCode() {
return code;
}


public void setCode(int code) {
this.code = code;
}


public String getMessage() {
return message;
}


public void setMessage(String message) {
this.message = message;
}


public static Map<String, String> getMapCode() {
return mapCode;
}


public static void setMapCode(Map<String, String> mapCode) {
ResultCode.mapCode = mapCode;
}


}


System.out.println("messageMap: " + ResultCode.getMapCode().toString());
System.out.println("0:message: " + ResultCode.getMapCode().get("0"));
System.out.println("110:message: " + ResultCode.getMapCode().get("110"));


messageMap: {0=SUCCSEE, 110=this is warning}
0:message: SUCCSEE
110:message: this is warning