Switch case参数可以是枚举类型,那么怎么样才能使用String呢?
例如,我想要case的类型是:alert,application,server,keyTrans,mobile这样的字符串
那么
1 声明一个枚举类
public enum Apptype{
alert("alert"),
application("application"),
server("server"),
keyTrans("keyTrans"),
mobile("mobile");
String value;
private Apptype(String value) {
this.value = value;
}
public String getValue() {
return value;
}
};
2 声明一个方法或者工具类,实现枚举类型转化为String的方法
public static <T extends Enum<T>> T valueOfIgnoreCase(Class<T> enumeration,String name) {
for (T enumValue : enumeration.getEnumConstants()) {
if (enumValue.name().equalsIgnoreCase(name)) {
return enumValue;
}
}
throw new IllegalArgumentException("There is no value with name '"
+ name + " in Enum " + enumeration.getClass().getName());
}
这样就可以直接用了
@Override
public void onSuccess(int statusCode,
org.apache.http.Header[] headers,
java.lang.String responseString) {
// TODO Auto-generated method stub
String string = responseString.toString();
Gson gson = new Gson();
HashMap<String,int[]> ColorLine = gson.fromJson(string,
new TypeToken<HashMap<String,int[]>>() {
}.getType());
//alert_line app_line server_line keyTrans_line mobile_line
int[] colorNum;
for(Entry<String, int[]> entry : ColorLine.entrySet()){
switch (EnumChangeUtil.valueOfIgnoreCase(Apptype.class, entry.getKey())){
case alert:
colorNum=entry.getValue();
LineItem[] alertlines = new LineItem[]{new LineItem(colorNum[0],Color.GRAY),new LineItem(colorNum[1],Color.BLUE),new LineItem(colorNum[2],Color.RED)};
alert_line.setLines(alertlines);
break;
case application:
colorNum=entry.getValue();
LineItem[] applicationlines = new LineItem[]{new LineItem(colorNum[0],Color.GRAY),new LineItem(colorNum[1],Color.BLUE),new LineItem(colorNum[2],Color.RED)};
app_line.setLines(applicationlines);
break;
case server:
colorNum=entry.getValue();
LineItem[] serverlines = new LineItem[]{new LineItem(colorNum[0],Color.GRAY),new LineItem(colorNum[1],Color.BLUE),new LineItem(colorNum[2],Color.RED)};
server_line.setLines(serverlines);
break;
case keyTrans:
colorNum=entry.getValue();
LineItem[] keyTranslines = new LineItem[]{new LineItem(colorNum[0],Color.GRAY),new LineItem(colorNum[1],Color.BLUE),new LineItem(colorNum[2],Color.RED)};
keyTrans_line.setLines(keyTranslines);
break;
case mobile:
colorNum=entry.getValue();
LineItem[] mobilelines = new LineItem[]{new LineItem(colorNum[0],Color.GRAY),new LineItem(colorNum[1],Color.BLUE),new LineItem(colorNum[2],Color.RED)};
mobile_line.setLines(mobilelines);
break;
default:
break;
}
}
// LineItem[] lines = new LineItem[]{new LineItem(1,Color.RED),new LineItem(2,Color.BLUE)};
// segmentLineView.setLines(lines);
// alert_line.setLines(lines);
}