我有一个条件语句很少的方法。我添加了if条件,所以我可以避免我的NPE崩溃。有什么方法可以简化我添加非空检查的if条件吗?
private void addComplementaryProductToBasket(String productId, String comboName) {
Product product = ProductComboUtils.getProductById(productId);
if (null == product) {
LOG.info("Product does not exist in ProductComboUtils, fetching from DB");
product = getProduct(productId);
}
if (product != null){
product.setPrice(BigDecimal.ZERO);
product.setCurrencyCode(currentBasket.getCurrencyCode());
// Ensure to add comboName with purchase, this
currentBasket.addToPurchase(product, comboName);
int numberOfComplementaryProducts =
currentBasket.getPurchaseLineItemForProduct(product.getProductId()).getNumberOfComplementaryProducts();
currentBasket.getPurchaseLineItemForProduct(product.getProductId()).setNumberOfComplementaryProducts(
++numberOfComplementaryProducts);
}else
{
CrashUtil.logNonFatalException("Product instance is null for productId: " + productId);
}
}
答案 0 :(得分:0)
如果您希望首先维护检查ProductComboUtils
然后从数据库中提取的逻辑,则无法简化此示例中的if条件。
答案 1 :(得分:0)
由于你从两个来源获得了价值,我只想用支票(Utlis或DB)创建一个方法。
public Product getProductTest(String productId){
Product product = ProductComboUtils.getProductById(productId);
if (null == product) {
LOG.info("Product does not exist in ProductComboUtils, fetching from DB");
product = getProduct(productId);
}
return product;
}
然后你只需要获取值并检查值。如果这是null
,那么就会出现问题并显示错误。
private void addComplementaryProductToBasket(String productId, String comboName) {
Product product = getProductTest(productId);
if (product != null){
....
} else ...
}
答案 2 :(得分:0)
您可以为产品信息/详细信息提供单独的列。
在表格中添加额外的列 isUpdated ,并将 0 保留为默认值。
当您达到足够的要求时,将列值更新为 1
public void isProdUpdated(int id) {
SQLiteDatabase db = this.getWritableDatabase();
try {
Cursor cursor = db.rawQuery(selectQuery, null); // selectQuery is your complete query
if (cursor.getCount() != 0
&& cursor.moveToFirst()) {
int status = cursor.getInt(cursor
.getColumnIndex(Const.KEY_IS_UPDATED));
cursor.close();
return status;
}
cursor.close();
} catch (Exception e) {
return 0;
}
return 0;
}
实施例
public Product getTestProduct(String productId){
Product product = null;
if (ProductComboUtils.isProdUpdated(productId) == 1) {
return product = ProductComboUtils.getProductById(productId);
}else{
LOG.info("Product does not exist in ProductComboUtils, fetching from DB");
return product = getProduct(productId);
}
}
在获取产品信息之前,请使用您的主要和检查值调用上述方法。如果它返回1然后继续,否则提示用户没有可用的信息。