我有以下条件来根据我将在参数incomingProduct上接收的值来检查我将要检查的内容,所以,我有以下多个条件,但它们看起来很奇怪,因为每次执行多次检查时请告知如何如果我可以做同样的事情,我可以用其他方式自定义下面的检查。
String incomingProduct = wokerchoice.getProduct();
if (incomingProduct!= null && incomingProduct.equalsIgnoreCase("CD") ) {
wokerchoice.setFourceSystem
((String)configuration.getConfiguration().get("CD"));
}
if (incomingProduct!= null && incomingProduct.equalsIgnoreCase("MODITY") ) {
wokerchoice.setFourceSystem((String)configuration.getConfiguration().get("MODITY"));
}
if (incomingProduct!= null && incomingProduct.equalsIgnoreCase("WQEQD") ) {
wokerchoice.setFourceSystem((String)configuration.getConfiguration().get("WEREQD"));
}
if (incomingProduct!= null && incomingProduct.equalsIgnoreCase("QRTFI") ) {
wokerchoice.setFourceSystem((String)configuration.getConfiguration().get("WERFI"));
}
if (incomingProduct!= null && incomingProduct.equalsIgnoreCase("URES") ) {
wokerchoice.setFourceSystem((String)configuration.getConfiguration().get("V"));
}
if (incomingProduct!= null && incomingProduct.equalsIgnoreCase("FXQWNM") ) {
wokerchoice.setFourceSystem((String)configuration.getConfiguration().get("FXQWNM"));
}
if (incomingProduct!= null && incomingProduct.equalsIgnoreCase("IERTRD") ) {
wokerchoice.setFourceSystem((String)configuration.getConfiguration().get("IERTRD"));
}
if (incomingProduct!= null && incomingProduct.equalsIgnoreCase("UHVMM") ) {
wokerchoice.setFourceSystem((String)configuration.getConfiguration().get(UHV"MM"));
}
if (incomingProduct!= null && incomingProduct.equalsIgnoreCase("OPT") ) {
wokerchoice.setFourceSystem((String)configuration.getConfiguration().get("OPT"));
}
if (incomingProduct!= null && incomingProduct.equalsIgnoreCase("RECE") ) {
wokerchoice.setFourceSystem((String)configuration.getConfiguration().get("RECS"));
}
答案 0 :(得分:3)
由于你的不一样,通常做的是将传入和传出的映射放在地图上:
Map<String, String> ht = new HashMap<String, String>(){ { put("ONE","ONE");
put("OTHER","TWO");} };
String cfg = ht.get(incomingProduct.toUpperCase());
if (cfg != null)
wokerchoice.setFourceSystem((String)configuration
.getConfiguration().get(cfg));
遗憾的是,java还没有让我们能够声明文字地图,所以我使用了你上面看到的丑陋的匿名类hack来获得一个单行。
如果你可以得到相同的传入和传出映射(我推荐,虽然它可能不可能),你可以使用一个列表或字符串数组。
String[] mapping = {"ONE", "TWO"};
String incoming = incomingProduct.toUpperCase();
if(Arrays.asList(mapping).contains(incoming)){
wokerchoice.setFourceSystem((String)configuration
.getConfiguration().get(incoming));
}
但是真的;假设getConfiguration()。get()如果没有值则返回null(并且如果映射步骤你可以摆脱),最好的答案看起来像这样:
String incoming = incomingProduct.toUpperCase();
Object cfg= configuration.getConfiguration().get(incoming);
If (cfg != null)
wokerchoice.setFourceSystem((String)cfg);