Java 以不同的方式写入开关
所以我有一个开关,有两个外壳,里面的东西90%相似,所以我的问题是,我如何才能写得不同,并保存一些代码,我几乎被困在这一点上,开关工作,但我相信有另一种方式,更优Java 以不同的方式写入开关,java,android,performance,google-maps,optimization,Java,Android,Performance,Google Maps,Optimization,所以我有一个开关,有两个外壳,里面的东西90%相似,所以我的问题是,我如何才能写得不同,并保存一些代码,我几乎被困在这一点上,开关工作,但我相信有另一种方式,更优 markeradd(id, bmp, pozastring, adresa, denumire, tipretea, latitude + "", longitude + "", latlng, BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREE
markeradd(id, bmp, pozastring, adresa, denumire, tipretea, latitude + "", longitude + "", latlng, BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
我会详细解释的
markeradd(id, bmp, pozastring, adresa, denumire, tipretea, latitude + "", longitude + "", latlng, BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
我有以下两个开关箱
switch (tipretea) {
case "red":
break;
case "green":
break;
}
markeradd(id, bmp, pozastring, adresa, denumire, tipretea, latitude + "", longitude + "", latlng, BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
tipretea是本地数据库中的一列,“红色”、“绿色”是该列的值。
在这个案例中,我调用了一个方法,将标记放在地图上,“红色”案例中的红色标记和“绿色”案例中的绿色标记
markeradd(id, bmp, pozastring, adresa, denumire, tipretea, latitude + "", longitude + "", latlng, BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
该方法如下所示:
markeradd(id, bmp, pozastring, adresa, denumire, tipretea, latitude + "", longitude + "", latlng, BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
只更改最后一个参数
markeradd(id, bmp, pozastring, adresa, denumire, tipretea, latitude + "", longitude + "", latlng, BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
BitmapDescriptorFactory.HUE_GREEN)
为了绿色
markeradd(id, bmp, pozastring, adresa, denumire, tipretea, latitude + "", longitude + "", latlng, BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
BitmapDescriptorFactory.HUE_RED)
红色的
markeradd(id, bmp, pozastring, adresa, denumire, tipretea, latitude + "", longitude + "", latlng, BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
如果你问我,代码是相当大的,所以我问你一个更好的方法写下来,下面是完整的开关代码
markeradd(id, bmp, pozastring, adresa, denumire, tipretea, latitude + "", longitude + "", latlng, BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
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;
}
您可以使用a,在开关中更改该值,然后在markeradd
中使用该float
:
markeradd(id, bmp, pozastring, adresa, denumire, tipretea, latitude + "", longitude + "", latlng, BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
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));
在switch
语句中包含default
是一种很好的做法,因为switch
所使用的值与所提供的情况不同:
markeradd(id, bmp, pozastring, adresa, denumire, tipretea, latitude + "", longitude + "", latlng, BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
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).
}
还要注意,中断代码>语句在最后一种情况下是不必要的,因为不管怎样,开关
。尽管如此。将案例结果存储在本地值中,如myHue=BitmapDescriptorFactory.HUE\u RED;myHue=BitmapDescriptorFactory.HUE\u绿色;然后用这个结果调用你的markeradd方法,它不是等价的,因为原始的方法对不匹配的输入不做任何事情(通常没有什么大不了的)。@maaartinus你是对的,但就像你说的,在这种情况下,我想这就是提问者想要知道的。是的,这正是我想要的,谢谢@MarchingHome。
markeradd(id, bmp, pozastring, adresa, denumire, tipretea, latitude + "", longitude + "", latlng, BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));