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

多语言网站难做么wordpress获得留言

多语言网站难做么,wordpress获得留言,网站模板下载免费,百度购物平台大量判空的代码 实际中#xff0c;对象不判空会导致空指针异常。 为了规避为指针#xff0c;不得不写出这种非常冗长又丑陋的空指针判断。 public void tooMuchNull(Worker worker) {if (worker ! null) {Address addressworker.getAddress();if (address ! null) {String…大量判空的代码 实际中对象不判空会导致空指针异常。 为了规避为指针不得不写出这种非常冗长又丑陋的空指针判断。 public void tooMuchNull(Worker worker) {if (worker ! null) {Address addressworker.getAddress();if (address ! null) {String cityaddress.getCity();}} }OptionalT OptionalT包含的对象value可能非null也可能为null。 常建的构建OptionalT对象的方法有ofNullable(T value)、of(T value)。 构建时最终都会调用Optional的构造方法Optional(T value)。 而常见的判断Optional结果的方法有orElse()、ifPresent()、get()、empty()、map()、flatMap()。 api图 如下图所示 代码示例 orElse(): /*** orElse(默认值)如果OptionalT封装的对象不存在值则返回默认值。*/ public void orElseDemo() { // Worker worker1new Worker(123,18,lin);Worker worker1 null;Worker worker2 new Worker(456, 28, chen);//如果worker1不为null则orElse返回worker1,否则返回默认值worker2Worker result Optional.ofNullable(worker1).orElse(worker2);//相当于以下代码 // if (worker1 ! null) { // result worker1; // } else { // result worker2; // }System.out.println(result.getName() , result.getAge()); }orElseGet(): /*** orElseGet()如果OptionalT封装的对象不存在值则执行Supplier函数式。* orElseGet(Supplier? extends T other)返回的类型必须和Optional封装的对象类型一致。*/ public void ofElseGetDemo() {String name1 null;String name2 lin;//orElseGet(Supplier? extends T other)返回的类型必须和Optional封装的对象类型一致。String result Optional.ofNullable(name1).orElseGet(()- name2def);System.out.println(result); } of(): /*** of(对象)如果封装的对象为空则会报出空指针异常*/ public void ofDemo() { // Worker worker1new Worker(123,18,lin);Worker worker1 null;Worker worker2 new Worker(456, 28, chen);Worker result Optional.of(worker1).orElse(worker2);System.out.println(result.getName() , result.getAge()); }isPresent(): /*** isPresent()表示如果OptionalT封装的对象不为空就返回true。*/ public void isPresentDemo() {Worker worker1 new Worker(123, 18, lin);OptionalWorker workerOpt Optional.ofNullable(worker1);//这种写法比较丑可以直接用下面的ifPresent()方法代替。boolean isPresent workerOpt.isPresent();if (isPresent) {System.out.println(workerOpt.get().getName());}//以上代码相当于 // if (worker1 ! null) { // System.out.println(worker1.getName()); // } }ifPresent(lambda): /*** ifPresent(lambda)表示如果对象不为null则会执行对应的lambda语句。*/ public void ifPresentDemo() { // Address addressnew Address(中国,广东,深圳); // Worker worker1new Worker(123,18,lin,address);Worker worker1 new Worker(123, 18, lin); // Worker worker1null;ListString nameList new ArrayList();Optional.ofNullable(worker1).ifPresent(worker - nameList.add(worker.getName()));//上面这句代码的作用相当于以下注释的代码 // if (worker1 ! null) { // nameList.add(worker1.getName()); // }nameList.forEach(System.out::println); } map(lambda) map的参数里面是lambda表达式会从Optional对象中进行映射提取和转换值。 map是一个非常实用的方法。用得也比较多。 比如 String name ; if (person!null) {name person.getName(); }这种大量的判空在项目开发中随处可见。可以使用 Optional的 map方法替换。 String name Optional.ofNullable(person).map(Person::getName).orElse();其他示例 public void mapDemo() {String str test ;Optional.ofNullable(str).map(String::trim).filter(t - t.length() 1).ifPresent(s-{s1234;System.out.println(s);}); //相当于以下代码 // if (str ! null) { // strstr.trim(); // if (str.length() 1) { // str1234; // System.out.println(str); // } // } }flatMap(lambda): flatMap()的参数是lambda表达式返回值是Optional。 /*** flatMap()如果Optional封装对象不为空就会执行对应的mapping函数返回Optional类型的值否则就返回一个空的Optional对象。* 通过flatMap()可以不断地返回Optional对象一直进行链式调用。非常重要~*/ public void flatMapDemo() {Address address new Address(中国, 广东, 深圳);Worker worker new Worker(123, 18, lin, address);String city Optional.ofNullable(worker).flatMap(Worker::getAdress).flatMap(Address::getCity).orElse(default);System.out.println(city); }orElseThrow(): /*** orElseThrow(),如果Optional封装的对象为空就会抛出对应的异常。*/ public void orElseThrowDemo() { // Worker worker new Worker(123, 18, lin);Worker worker null;Worker result Optional.ofNullable(worker).orElseThrow(IllegalArgumentException::new);System.out.println(result.getName()); }filter(lambda): public void filterDemo() {Worker worker new Worker(123, 18, lin);OptionalWorker result Optional.ofNullable(worker).filter(worker1 - worker1.getAge() 20);//如果符合条件(比如年龄大于20)则为true不符合则为falseSystem.out.println(result.isPresent()); }区别 of() 和 ofNullable() 的区别 这两个方法都可以创建包含值的 Optional。 不同之处在于如果你把 null值作为参数传递进ofNullable()而传递null作为参数时of() 方法会抛出 NullPointerException。 orElse()和orElseGet()的区别 orElse(默认值)表示如果有值则返回该值否则返回传递给它的默认值。 orElseGet(lambda表达式)会在有值的时候返回值如果没有值它会执行作为参数传入的函数式接口(返回类型必须和Optional封装的对象是同一种类型)并将返回其执行结果。 需要特别注意的是 Optional的orElse()若方法不是纯计算型的有与数据库交互或者远程调用的都应该使用orElseGet() 。 orElse()无论前面Optional容器是null还是non-null都会执行orElse里的方法orElseGet()并不会。 详情参见https://blog.csdn.net/weixin_30437337/article/details/95443798 isPresent()和ifPresent(lambda)的区别 看方法名is开头就可以知道isPresent()返回的是布尔值。而ifPresent()则是如果对应的值存在就会执行函数式接口。 flatMap(lambda)和map(lambda)的区别 值不为空时两者都会执行参数中的函数式接口。 而flatMap()返回值是Optional通过不断地产生Optional可以进行链式调用。 可以重构的示例 回头看一下开头的代码如下 public void tooMuchNull(Worker worker) {if (worker ! null) {Address addressworker.getAddress();if (address ! null) {String cityaddress.getCity();}} }下面尝试用Optional改写。 重写getter() 重写getter返回Optional对象。 public class User {private Address address;public OptionalAddress getAddress() {return Optional.ofNullable(address);}// ... }优化 重写完getter后上面的例子可以用Optional改写为 public void preventNullPointer() {Worker worker new Worker(123, 18, lin);String result Optional.ofNullable(worker).flatMap(u - u.getAddress()).flatMap(a - a.getCity()).orElse(default);}再进一步简写成 String city Optional.ofNullable(worker).flatMap(Worker::getAdress).flatMap(Address::getCity).orElse(default);使用Optional要注意 Optional 主要用作返回类型。 Optional不能作为入参的参数. Optional不会序列化不要直接作为对象属性。 Optional不要用于集合操作。空集合请使用Collections.emptyList()。 代码地址 https://github.com/firefoxer1992/JavaDemo/tree/master/src/main/java/com/java8 参考资料 https://www.cnblogs.com/zhangboyu/p/7580262.html https://juejin.im/post/5e66ecdc518825490d126a16
http://www.pierceye.com/news/715662/

相关文章:

  • 上海网站设计要多少钱建设银行个人网站打不开
  • 哪个网站做欧洲旅行比较好东营网站制作
  • 做pc端网站效果wordpress js 添加图片
  • 给装修公司做网站商标设计大全
  • 深圳做网站公司有哪些地方国际形势最新消息
  • 企业网站建设管理平台石家庄平山网站推广优化
  • 免费asp网站模板带后台网站建设需求调研通知
  • 浙江二建建设集团有限公司网站微信哪里可以做视频网站
  • wordpress阿里百秀5.2广州网站排名专业乐云seo
  • 网站建设 上海网站福州最好的网站建设公司
  • 兴力网站建设企业宣传网站在哪里做
  • 网站了建设pc官网 和手机网站
  • wordpress导航网站模板下载wordpress 关闭搜索引擎
  • 网站架构的优化wordpress企业主题免费下载
  • 分类信息网站手机版自学编程从哪学起
  • 网站目录 index.html京伦科技网站做的怎么样
  • 学做简单网站视频教程济源建设网站
  • 一个网站开发成本网店推广方案范文
  • 为什么要做seo盐城网站优化
  • 网站策划方案ppt站长查询域名
  • 网站开发需要哪些流程wordpress 添加widget
  • 在线报名网站建设汉字logo设计生成器
  • 移动网站和桌面网站区别烟台网站设计制作公司电话
  • 遵义网站建设网站定制wordpress主题多少钱
  • 外贸网站如何做推广是什么意思长沙制作公园仿竹护栏多少钱一米
  • seo网站有优化培训吗小程序商城开发华网天下优秀
  • 无锡品牌网站建设介绍网络营销是不是网络推广
  • 旅游网站建设论文题目商用图片的网站
  • 做网页专题 应该关注哪些网站网页版梦幻西游吸血鬼怎么过
  • gwt 网站开发深圳公司形象墙制作