我已經映射了用戶在何處設定這些欄位name, productId, productSerial, productDesc,productPrice因為在 Java bean 中設定之前所有這些都是可選欄位我必須檢查是否key存在并設定值。為了實作這一點,我撰寫了以下代碼,但我有太多if-else條件無法做到這一點。有人可以建議我們如何在java中有效地撰寫這段代碼嗎?抱歉,我是 Java 新手,因此對糟糕的編碼深表歉意。提前感謝您的幫助。謝謝!
產品.java
public class Product {
private String name;
private String productId;
private String productSerial;
private String productDesc;
private String productPrice;
}
主程式
public class Main {
public static void main(String[] args) {
Map<String, String> map = new HashMap<>();
map.put("name", "iPhone");
map.put("productId", "2342343");
map.put("productSerial", "FG44D#KLD");
map.put("productDesc", "iPhone plus");
map.put("productPrice", "1500");
Product product = new Product();
if (map.containsKey("name")) {
product.setName((String) map.get("name"));
} else {
product.setName("NOT_EXIST");
}
if (map.containsKey("productId")) {
product.setProductId((String) map.get("productId"));
} else {
product.setProductId("NOT_EXIST");
}
if (map.containsKey("productSerial")) {
product.setProductSerial((String) map.get("productSerial"));
} else {
product.setProductSerial("NOT_EXIST");
}
if (map.containsKey("productDesc")) {
product.setProductDesc((String) map.get("productDesc"));
} else {
product.setProductDesc("NOT_EXIST");
}
if (map.containsKey("productPrice")) {
product.setProductPrice((String) map.get("productPrice"));
} else {
product.setProductPrice("NOT_EXIST");
}
}
}
uj5u.com熱心網友回復:
您需要使用Map.getOrDefault(key,defValue)which 回傳地圖中的值或默認值 - 第二個引數。
product.setXYZ(map.getOrDefault("xyz", "NOT_EXIST"));
注意:從 JDK1.8 開始
uj5u.com熱心網友回復:
您應該使用該Map::getOrDefault方法,如下所示:
Map<String, String> map = new HashMap<>();
Product product = new Product();
//...
product.setName(map.getOrDefault("name", "NOT_EXIST"));
product.setProductId(map.getOrDefault("productId", "NOT_EXIST"));
product.setProductSerial(map.getOrDefault("productSerial", "NOT_EXIST"))
//...
如果您有大量這樣的屬性要設定,那么您也可以考慮使用反射 - 盡管在我看來最好避免使用它。
此外,您不必強制轉換地圖回傳的值,因為您指定了地圖型別Map<String,String>,這意味著您的所有.get(..)和.getOrDefault(..)呼叫都已知始終回傳String(或null)物件:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/351220.html
上一篇:Java做while回圈不繼續
