加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java 8避免了大量的if / else语句

发布时间:2020-12-15 02:03:27 所属栏目:Java 来源:网络整理
导读:我有一些看起来像这样的东西: public boolean isValidObject(SomeObject obj){ if(obj.getField() == null){ LOG.error("error code 1"); return false; } if(obj.getField().getSize() 500){ LOG.error("error code 2"); return false; } ...... if(someCo
我有一些看起来像这样的东西:

public boolean isValidObject(SomeObject obj){
    if(obj.getField() == null){
      LOG.error("error code 1");
      return false;
    }
    if(obj.getField().getSize() > 500){
      LOG.error("error code 2");
      return false;
    }
    ......
    if(someCondition()){
     log something
     return false;
    }

    return true;
}

用lambdas在java 8中编写这个最干净的方法是什么?

解决方法

为此使用多态.为每个逻辑验证器创建一个类,并将它们链接到列表中.这里有你需要的很好的答案:
https://stackoverflow.com/a/23501390/1119473

public interface Validator<SomeObject>{
    public Result validate(SomeObject object);
}

执行:

public class SomeFieldSizeValidator implements Validator<SomeObject> {

@Override
public Result validate(SomeObject obj) {
    // or you can return boolean true/false here if it's enough
    return obj.getField().getSize() > 500 ? Result.OK : Result.FAILED;
    }
}

调用验证链:

List<Validator> validators = ... create ArrayList of needed Validators
for (Validator v : validators) {
if (!v.validate(object)) { 
  ... throw exception,you know validator and object here
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读