当前位置: 首页 > news >正文

网站建设技术人员工作总结外贸婚纱礼服网站

网站建设技术人员工作总结,外贸婚纱礼服网站,营销推广公司,建设网站能解决什么问题使用Java8的Lambda实现MonadMonad是函数语言(Cojure或Scala)中的设计模式概念#xff0c; 那么现在为什么在Java中变得如此重要#xff1f;因为Java从版本8以后引入了新的Lambda特性#xff0c;Lambda或闭包是函数语言的特征#xff0c;它允许你使用代码块作为一个变量 那么现在为什么在Java中变得如此重要因为Java从版本8以后引入了新的Lambda特性Lambda或闭包是函数语言的特征它允许你使用代码块作为一个变量并且让你将它传递。首先我们假设一个不使用Monad的场景空值Null检查public static class Userdetails{public Address address;public Name name;}public static class Name{public String firstName;public String lastName;}public static class Address{public String houseNumber;public Street street;public City city;}public static class Street{public String name;}public static class City{public String name;}现在你要从UserDetails访问其street接到名称有可能是空的不用Monad你也许是如下进行检查if(user null )return null;else if(user.address null)return null;else if(user.address.street null)return null;elsereturn user.address.street.name;这是非常琐碎和噪音的。让我们创建一个Option类代表一个可选值然后有一个围绕其运行lambda的map方法该方法返回另外一个可选值。如果围绕的值是一个null, 它会返回一个Option其中包含null, 这样避免空指针出现注意map方法需要使用一个lambda作为参数但是我们需要首先创建一个接口SingleArgExpression 支持它。因为在Java8中使用函数接口表达lambda:public interface SingleArgExpression {public R function(P param);}准备好了函数接口这样我们可以将SingleArgExpression的lambda作为参数传递了下面是Option.java关键是其中的map方法该方法参数是SingleArgExpression的lambda。public class Option {T value;public Option(T value){this.value value;}//核心重要方法map 如果是空就不应用lambda否则就可以使用lambdapublic Option map(SingleArgExpression mapper){if(value null){return new Option(null);}else{return new Option(mapper.function(value));}}Overridepublic boolean equals(Object rhs){if(rhs instanceof Option){Option o (Option)rhs;if(value null)return (o.valuenull);else{return value.equals(o.value);}}else{return false;}}Overridepublic int hashCode(){return valuenull? 0 : value.hashCode();}public T get(){return value;}}下面我们重新编写Userdetails如下public class OptionExample{public static class Userdetails{public Option address new Option(null);public Option name new Option(null);}public static class Name{public Option firstName new Option(null);public Option lastName new Option(null);}public static class Address{public Option houseNumber;public Option street;public Option city;}public static class Street{public Option name;}public static class City{public Option name;}public static void main(String [] args){Option userOpt   new Option(new Userdetails());//现在变得很简单了。String streetName userOpt.flatMap(user - user.address).map(address - address.street).map(street - street.name).get();System.out.println(streetName);}}核心代码如下String streetName userOpt.flatMap(user - user.address).map(address - address.street).map(street - street.name).get();这样就不用担心返回空值抛出空指针错误了。现在UserDetails的所有方法都是返回一个Option了这确保方法的使用者了解返回值可能会为空。为了避免核心代码中每次都调用get(), 我们使用类似flatMap替代mappublic Option flatMap(SingleArgExpression mapper){if(value null){return new Option(null);}return  mapper.function(value);}上面方法其实是一个过滤器它让我们放入一个if条件在map链中, 这样只有当条件为真是获得一个值注意这也是空安全null-safe。
http://www.pierceye.com/news/671897/

相关文章:

  • 广州移动 网站建设十大职业资格培训机构
  • 网站建设维护协议书网站开发程序用什么好
  • 零基础做网站教程天猫商城商品来源
  • 广州知名网站建设公司教育机构培训
  • 做游戏解说上传在什么网站好企业网站定制
  • 用iis浏览网站南宁网站seo大概多少钱
  • 如何用手机网站做淘宝客wordpress 免费 旅游
  • 青岛网站建设网站制作seo顾问服务福建
  • phpcms网站织梦 网站栏目管理 很慢
  • 金融网站 改版方案seo推广优化培训
  • 博物馆设计网站推荐网站布局有哪些常见的
  • 外贸网站建设980ps软件需要付费吗
  • 网站开发后的经验总结北新泾街道网站建设
  • 深圳市南山区住房和建设局网站国内知名网站建设伺
  • 企业网站建设制作的域名费用做的网站怎么上传
  • c++可视化界面设计搜索引擎优化自然排名的区别
  • 网站开发工作网络营销的网站分类有
  • 校园网上零售网站建设方案网站建设中页面模板
  • 网站如何报备外贸网站设计风格
  • 网上的网站模板怎么用百度网站认证官网
  • 上饶企业网站建设免费制作小程序游戏
  • cps推广网站建e网卧室设计效果图
  • php支持大型网站开发吗南海最新消息
  • 多语言企业网站html网站素材
  • 网站建设留言板怎么做优必选网站
  • 深圳建网建网站南博网站建设
  • 如何做防水网站一般网站做响应式吗
  • 回收手机的网站哪家好学生个人网页
  • 优秀甜品网站最有前景的十大行业
  • 手册设计南宁seo网站排名优化公司