1

-下面是一个 switch 语句,它接收一个整数,根据它我们需要用它的映射视图触发一个方法。

if (newObservation.consciousLevel.getValue() != null) {
            switch (newObservation.consciousLevel.getValue()) {
            case 0:
                // rb_alert.setChecked(true);
                // sg_conscious.check(R.id.sg_alert);
                processSegmentRadioGroupChange(sg_conscious, R.id.sg_alert);
                break;
            case 1:
                // rb_voice.setChecked(true);
                // sg_conscious.check(R.id.sg_voice);
                processSegmentRadioGroupChange(sg_conscious, R.id.sg_voice);
                break;
            case 3:
                // rb_pain.setChecked(true);
                // sg_conscious.check(R.id.sg_pain);
                processSegmentRadioGroupChange(sg_conscious, R.id.sg_pain);
                break;
            case 4:
                // rb_unresponsive.setChecked(true);
                // sg_conscious.check(R.id.sg_unresponsive);
                processSegmentRadioGroupChange(sg_conscious,
                        R.id.sg_unresponsive);
                break;
            }

        }

-现在不知何故我不想使用 switch 语句,而是想以下面的方式修改这段代码,

intbuttonIndex = observation.consciousLevel.getValue();
setButton(sg_conscious, buttonIndex);

你能帮我实现这个............我可以使用反射类来实现这个吗?

4

2 回答 2

1

创建一个 HashMap,提供 0、1、2、3、4 等到您希望它们映射到的 id 的映射。然后打电话 processSegmentRadioGroupChange(sg_conscious, myMap.get(newObservation.consciousLevel.getValue()));

于 2013-07-05T12:50:27.830 回答
0

-我认为enum将是您在这里尝试完成的更好的方法。

-在目前的情况下,你在 switch 中收到的是一个值为 0、1、2、3 和 4 的整数,并且你试图用视图的某些 id 映射它,所以在这里 switch 是合适的。

-现在关于反射,它有很好的 API 集,但我不会推荐有人使用它,直到他们真正知道什么时候使用它,什么时候不使用它......

这里有几个链接说明了为什么反射很棒但应该避免:

http://java.dzone.com/news/avoid-reflection

http://advint.extrapro.ru/articles/reflection.php

于 2013-07-05T13:06:33.297 回答