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 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |