Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以不同的方式写入开关_Java_Android_Performance_Google Maps_Optimization - Fatal编程技术网

Java 以不同的方式写入开关

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

所以我有一个开关,有两个外壳,里面的东西90%相似,所以我的问题是,我如何才能写得不同,并保存一些代码,我几乎被困在这一点上,开关工作,但我相信有另一种方式,更优

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));