如何为多个if-else语句编写函数

时间:2016-02-15 09:50:01

标签: java function if-statement

我是Java新手。我有很多if-else语句。为了代码优化的目的,我需要为所有if else逻辑编写一个函数。

if (obj.getJSONObject("page_1").has("city")) {
    sn.city = (String) obj.getJSONObject("page_1").get("city").toString();
} else {
    sn.city = null;
}

// param 2 - locality

if (obj.getJSONObject("page_1").has("locality")) {
    locality = (String) obj.getJSONObject("page_1").get("locality").toString();
} else {
    locality = null;
}

我喜欢110 if -else语句。我不知道如何优化代码。

3 个答案:

答案 0 :(得分:5)

我可能会写一个类似的函数:

static String getToStringOrNull(JSONObject parent, String key) {
  return parent.has(key) ? parent.get(key).toString() : null;
}

然后你可以像

一样调用
sn.city = getToStringOrNull(obj.getJSONObject("page_1"), "city");
locality = getToStringOrNull(obj.getJSONObject("page_1"), "locality");

答案 1 :(得分:2)

我认为最好用的是这种表示法(ternary operator):

sn.city = (obj.getJSONObject("page_1").has("city")) ? 
                    (String) obj.getJSONObject("page_1").get("city").toString() : null;

?之前的部分代表if语句,第二部分代表条件,否则代表最后部分。

答案 2 :(得分:0)

对于您班级的所有直接字段,您可以使用反射(如果需要,您可以在sn对象上执行相同的工作):

Objective-C