所以我有两个案例的开关,里面的内容就像90%相似,所以我的问题是,如何以不同的方式编写并保存一些代码,我几乎坚持这个,交换机工作,但我是确定还有另一种方式,更优化。
我会深入解释。
我有以下两种情况的开关案例。
switch (tipretea) {
case "red":
break;
case "green":
break;
}
tipretea是本地数据库中的列,“red”,“green”是该列的值。 在案例中,我正在调用一种方法,将标记放在地图上,红色标记用于“红色”案例,绿色标记用于“绿色”案例。
方法如下所示:
markeradd(id, bmp, pozastring, adresa, denumire, tipretea, latitude + "", longitude + "", latlng, BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
仅更改了最后一个参数。
BitmapDescriptorFactory.HUE_GREEN)
表示绿色。
BitmapDescriptorFactory.HUE_RED)
表示红色。
如果你问我我的代码是相当大的,所以我要求你写一个更好的方法,下面是完整的开关代码。
switch (tipretea) {
case "red":
markeradd(id, bmp, pozastring, adresa, denumire, tipretea, latitude + "", longitude + "", latlng, BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED));
break;
case "green":
markeradd(id, bmp, pozastring, adresa, denumire, tipretea, latitude + "", longitude + "", latlng, BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
break;
}
答案 0 :(得分:3)
您可以使用float
value,在switch
中更改该值,然后在float
中使用markeradd
:
float hue = 0;
switch (tipretea) {
case "red":
hue = BitmapDescriptorFactory.HUE_RED;
break;
case "green":
hue = BitmapDescriptorFactory.HUE_GREEN;
break;
}
markeradd(
id,
bmp,
pozastring,
adresa,
denumire,
tipretea,
latitude + "",
longitude + "",
latlng,
BitmapDescriptorFactory
.defaultMarker(hue));
优良作法是在default
语句中包含switch
,以便switch
处的值出乎意料地不是提供的案例:
switch (tipretea) {
case "red":
hue = BitmapDescriptorFactory.HUE_RED;
break;
case "green":
hue = BitmapDescriptorFactory.HUE_GREEN;
break;
default:
//TODO Do something to catch the possibility of an unexpected value for tipretea (notify the user / send an error report, something like that).
}
另请注意,在最后一种情况下不需要break;
语句,因为无论如何都会完成switch
。虽然something is to be said for always providing the break;
statement。