我有以下if语句检查哪些看起来不正确,因为它们是多个如果检查请告知我如何减少它们,因为从技术上看也是多次检查已经完成
String incomingProduct = brokerInvoice.getProduct();
if (incomingProduct!= null && incomingProduct.equalsIgnoreCase("CD") ) {
brokerInvoice.setSourceSystem((String)configuration.getConfiguration().get("CD"));
}
if (incomingProduct!= null && incomingProduct.equalsIgnoreCase("COMMODITY") ) {
brokerInvoice.setSourceSystem((String)configuration.getConfiguration().get("CQD"));
}
if (incomingProduct!= null && incomingProduct.equalsIgnoreCase("DITY") ) {
brokerInvoice.setSourceSystem((String)configuration.getConfiguration().get("DITY"));
}
if (incomingProduct!= null && incomingProduct.equalsIgnoreCase("ITY") ) {
brokerInvoice.setSourceSystem((String)configuration.getConfiguration().get("ITY"));
}
if (incomingProduct!= null && incomingProduct.equalsIgnoreCase("CO") ) {
brokerInvoice.setSourceSystem((String)configuration.getConfiguration().get("CO"));
}
if (incomingProduct!= null && incomingProduct.equalsIgnoreCase(MODITY") ) {
brokerInvoice.setSourceSystem((String)configuration.getConfiguration().get("MODITY"));
}
请告知我是否可以使用地图数据结构
答案 0 :(得分:0)
String[] products = new String[6]
products[0] = "CD";
products[1] = "COMMODITY";
products[2]= "DITY";
products[3] = "IT";
products[4] = "CO";
products[5] = "MODITY";
for(int i = 0; i < products.length; i++){
if (incomingProduct!= null && incomingProduct.equalsIgnoreCase(products[i]) ) {
brokerInvoice.setSourceSystem((String)configuration.getConfiguration().get(products[i]));
}
}
这应该有效并且更具可读性
答案 1 :(得分:0)
最佳变体:
if (incomingProduct!= null) {
switch(incomingProduct.toLowerCase()){
case "cd": doSomethingWithProduct(incomingProduct.toUpperCase());
break;
case "commodity": doSomethingWithProduct(incomingProduct.toUpperCase());
break;
}
}
doSomethingWithProduct(String name){
brokerInvoice.setSourceSystem((String)configuration.getConfiguration().get(name));
}
答案 2 :(得分:0)
假设您可以避免检查incomingProduct
是否在{"CD", "CO", "COMMODITY", "DITY", "ITY", "MODITY"}
,您应该写一下:
String incomingProduct = brokerInvoice.getProduct();
if (incomingProduct != null) {
brokerInvoice.setSourceSystem((String) configuration.getConfiguration().get(incomingProduct));
}
否则你可以使用doge
的答案。
答案 3 :(得分:0)
假设"COMMODITY"
- &gt; "CQD"
案件是故意的:
private static final TreeMap<String, String> MAPPINGS = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
static {
MAPPINGS.put("CD", "CD");
MAPPINGS.put("COMMODITY", "CQD");
MAPPINGS.put("DITY", "DITY");
MAPPINGS.put("ITY", "ITY");
MAPPINGS.put("CO", "CO");
MAPPINGS.put("MODITY", "MODITY");
}
void doThings() {
String incomingProduct = brokerInvoice.getProduct();
if (incomingProduct != null) {
String configKey = MAPPINGS.get(incomingProduct);
if (configKey != null) {
brokerInvoice.setSourceSystem((String) configuration.getConfiguration().get(configKey));
}
}
}