我现在写一个程序关于设定颜色的。现在我用if-else的方式来写,由于要设定的颜色太多,整个代码都是if-else,感觉不太好。我写的代码如下:
if(Bank.equals("A")){
colour= Color.BLUE;
}else if(Bank.equals("B")){
colour=Color.RED;
}else if(Bank.equals("C")){
colour=Color.YELLOW;
}else if(Bank.equals("D")){..... }
所以想请问还有更好的方法吗?谢谢!
[b]问题补充:[/b]
hkliya -switch-case也是感觉不太好,太长了!
[b]问题补充:[/b]
firefly.li-不是很明白,可以给些代码参考吗?
[b]问题补充:[/b]
君临天下 -不是很清楚反射实现的用法,请给些例子。
[code="java"]public class singletonClass{
//保证全局 只有一个实例
private singletonClass instance = new singletonClasscolor=red;// 这里应该是static的[/color]
private Map map; [color=red]// 这里应该是static的[/color]
//构造方法为私有
private singletonClass(){
init();//初始化MAP 把值装配好
}
//初始化方法
private static void init(){
map = new HashMap();
//把对应的 键 - 值 都转配的map
map.put("BLUE",Color.BLUE);
map.put("RED",Color.RED);
}
//通过该静态方法可以获得 这个单例实例
public static singletonClass getInstance(){
return instance ;
}
//通过该方法 获得你想要的颜色的值
public static getElement(String key){ [color=red]// 这方法没有返回值?[/color]
return mao.get(key); [color=red]//mao?[/color]
}
//main测试
public static void main(String[] args){
System.out.println(//打印颜色所对应的值
singletonClass.getInstance().getElement("这里输入你你想要的颜色-- key");
)
}
}[/code]
也可以用switch-case啊
不过看起来也差不多
建议把if-else换成 swith-case
char c = 'A';
swith(c){
case 'A':{ colour= Color.BLUE; break;}
case 'B':{ colour=Color.RED; break;}
...
...
...
...
}
lz可以使用HasnTable以键值对的形式存储bank与color的映射关系。一次存储,多次调用,代码上会简洁一些。
用反射实现
用map来做
Map map = new HashMap();
map.put("A", Color.BLUE);
......
最后color = map.get(Bank);
HashTable类似Map都是键值对的映射,楼主可以参考hkliya的答案。
采用hkliya把这个map初始后存储起来
方法有多种:static block, singleton,cache等
觉得麻烦可以用单例模式 初次加载吧值都全部装入MAP中
用的时候再取:
例子如下:
[code="java"]
public class singletonClass{
//保证全局 只有一个实例
private singletonClass instance = new singletonClass();
private Map map;
//构造方法为私有
private singletonClass(){
init();//初始化MAP 把值装配好
}
//初始化方法
private static void init(){
map = new HashMap();
//把对应的 键 - 值 都转配的map
map.put("BLUE",Color.BLUE);
map.put("RED",Color.RED);
}
//通过该静态方法可以获得 这个单例实例
public static singletonClass getInstance(){
return instance ;
}
//通过该方法 获得你想要的颜色的值
public static getElement(String key){
return mao.get(key);
}
//main测试
public static void main(String[] args){
System.out.println(//打印颜色所对应的值
singletonClass.getInstance().getElement("这里输入你你想要的颜色-- key");
)
}
}
[/code]
-_-!
LZ没学过枚举吗?
enum