簡體   English   中英

如何為多個if-else語句編寫函數

[英]how to write function for multiple if-else statements

我是Java新手。 我有很多多個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語句。 我不知道如何優化代碼。

我可能會寫一個類似以下的函數:

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

我認為最好的用法是這種表示法( 三元運算符 ):

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

之前的部分? 代表if陳述,如果條件滿足,則代表第二部分,否則則代表最后一部分。

對於類的所有直接字段,您可以使用反射(如果需要,可以對sn對象執行相同的工作):

Class aClass = this.getClass();

Field[] fields = aClass.getFields();

for (Field field : fields) {


   String value = (obj.getJSONObject("page_1").has(field.getName())) ?
            (String) obj.getJSONObject("page_1").get(field.getName()).toString() : null;

   field.set(this, value);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM