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

新郑网站开发深圳门户网站制作

新郑网站开发,深圳门户网站制作,制定 网站改版优化方案,长沙市在建工程项目Optional使用详解 文章目录Optional使用详解1.构造函数2.Optional.of(T value)作用使用源码#xff08;只想知道怎么用的可以略过#xff09;Optional.ofNullable(T value)作用使用源码.orElse(T other)作用使用源码.orElseGet(Supplier? extends T other)作用使用源…Optional使用详解 文章目录Optional使用详解1.构造函数2.Optional.of(T value)作用使用源码只想知道怎么用的可以略过Optional.ofNullable(T value)作用使用源码.orElse(T other)作用使用源码.orElseGet(Supplier? extends T other)作用使用源码.map(Function? super T, ? extends U mapper)作用使用源码isPresent()作用使用源码ifPresent(Consumer? super T consumer)作用使用源码filter(Predicate? super T predicate)为了防止空指针报错NullPointerException一我们都会加上ifelse想让代码变得更优雅JAVA8提供了Optional类来优化这种写法1.构造函数 构造函数使用private修饰不能直接被外部访问没办法new出来Optional的本质就是内部储存了一个真实的值在构造的时候就直接判断其值是否为空。下面为源码 /*** Constructs an instance with the value present.** param value the non-null value to be present* throws NullPointerException if value is null*/private Optional(T value) {this.value Objects.requireNonNull(value);}//requireNonNull()方法public static T T requireNonNull(T obj) {//使用构造函数创建对象value为null则报空指针if (obj null)throw new NullPointerException();return obj;}2.Optional.of(T value) 一般推荐使用Optional.ofNullable(T value)在实际生产中很少使用of()方法因为使用of()方法value为null时会报出空指针。不过已有一些场景会用到比如一些需要空指针暴露的接口或测试类中。 作用 当value值为空时依然会报NullPointerException。当value值不为空时能正常构造Optional对象。 使用 //1.当 strnull报空指针 String str null; OptionalString str1 Optional.of(str);源码只想知道怎么用的可以略过 public static T OptionalT of(T value) {//构造函数创建对象return new Optional(value);}//构造函数private Optional(T value) {this.value Objects.requireNonNull(value);}//requireNonNull()方法public static T T requireNonNull(T obj) {//若传入的value为null则报空指针if (obj null)throw new NullPointerException();return obj;} Optional.ofNullable(T value) 与of(T value)最大的区别就是value可以为空推荐使用 作用 当value值为空时不会报空指针。当value值不为空时能正常构造Optional对象。 使用 String str null; //str为空时不会报空指针 OptionalString str2 Optional.ofNullable(str);源码 public static T OptionalT ofNullable(T value) {//value为null时执行empty()方法return value null ? empty() : of(value);}public staticT OptionalT empty() {SuppressWarnings(unchecked)//返回EMPTY对象OptionalT t (OptionalT) EMPTY;return t;}// EMPTY对象化就是new Optionalprivate static final Optional? EMPTY new Optional(); .orElse(T other) 作用 如果有值则将其返回否则返回指定的other对象。 传入的值为null时执行other并返回传入的值不为null时执行other返回传入的值 使用 执行以下代码控制台输出Hello被执行了可见传入的vaule不为null但是t.rousHello()依然执行。 public String rousHello() {System.out.println(Hello被执行了);return Hello!!!;} public static void main(String[] args) {test1 tnew test1();String s Optional.ofNullable(Str).orElse(t.rousHello());}源码 public T orElse(T other) {//value为ofNullable(T vaule)的valuevaule不为空返回balue否则执行otherreturn value ! null ? value : other;} .orElseGet(Supplier? extends T other) 比较推荐使用 作用 orElse()一定会被执行而orElseGet()只有传入的参数为null时才会被执行 只有传入的参数为null情况才才会执行orElseGet()内容 使用 public String rousHello() {System.out.println(Hello被执行了);return Hello!!!;} String s Optional.ofNullable(str).orElseGet(() - t.rousHello());源码 public T orElseGet(Supplier? extends T other) {return value ! null ? value : other.get();}.map(Function? super T, ? extends U mapper) 作用 不会返回空指针的获取对象属性 使用 //例如User中有个Address属性Address对象中有详细地址 public String getCity(User user) throws Exception{return Optional.ofNullable(user).map(u- u.getAddress()).map(a-a.getCity()).orElseThrow(()-new Exception(获取用户地址失败)); }源码 publicU OptionalU map(Function? super T, ? extends U mapper) {//1.为空则报空指针错误前面讲过Objects.requireNonNull(mapper);//不存在返回EMPTY对象前面讲过if (!isPresent())return empty();else {return Optional.ofNullable(mapper.apply(value));}}//requireNonNull()方法public static T T requireNonNull(T obj) {//若传入的value为null则报空指针if (obj null)throw new NullPointerException();return obj;}isPresent() 作用 判断是否存在.不存在返回false存在返回true 使用 boolean present Optional.ofNullable(user).isPresent();源码 源码很容易理解直接判断value是否!null public boolean isPresent() {return value ! null;}ifPresent(Consumer? super T consumer) 作用 如果存在则往下走 使用 //如果user存在则覆盖user的age和name属性 Optional.ofNullable(user).ifPresent(u-{u.setAge(100);u.setName(ifPresent);});源码 public void ifPresent(Consumer? super T consumer) {if (value ! null)consumer.accept(value);}filter(Predicate? super T predicate) 作用 如果值存在并且这个值匹配给定的 predicate返回一个Optional用以描述这个值否则返回一个空的Optional。 使用 user.setName(张四);//此处会报空指针因为get()方法在value为null的情况下会报空指针User user1 Optional.ofNullable(user).filter(u - u.getName() 张三).get();OptionalUser user2 Optional.ofNullable(user).filter(u - u.getName() 张三);user2.ifPresent(u-u.setAge(99));源码 public OptionalT filter(Predicate? super T predicate) {Objects.requireNonNull(predicate);if (!isPresent())return this;elsereturn predicate.test(value) ? this : empty();}
http://www.w-s-a.com/news/276439/

相关文章:

  • 国家企业官方网站查询系统站酷设计网站官网入口文字设计
  • 彩票网站开发制作需要什么wordpress连接微博专业版v4.1
  • 孝感建设银行官网站百度一下你就知道啦
  • 做网站如何做视频广告制作公司简介怎么写
  • 做网站 买空间商务网站内容建设包括
  • 萝岗网站建设为什么点不开网站
  • 惠州网站制作询问薇北京网站建设最便宜的公司
  • 注册网站英语怎么说wordpress 3.8.3
  • 甘肃张掖网站建设网站开发软件是什么专业
  • 海口省建设厅网站网站数据库怎么做同步
  • 做网站建设月收入多少app开发公司广州英诺
  • 新闻播报最新网站优化外包费用
  • wordpress分页出现404最专业的seo公司
  • 连云港网站建设电话连云港市建设局网站
  • 平面设计网站有哪些比较好drupal网站建设 北京
  • 健康资讯网站模板网页价格表
  • 2008发布asp网站宝安建网站的公司
  • 郑州市城市建设管理局网站制作公司网站 优帮云
  • 网站开发 瀑布结构普陀网站建设
  • 12380网站建设情况汇报plone vs wordpress
  • c 网站开发数据库连接与wordpress类似的都有哪些
  • 状元村建设官方网站长春做网站seo的
  • 做金融资讯网站需要哪些牌照海珠营销型网站制作
  • 学做网站需要买什么书手机网络
  • 寻找做电影网站团队合作西宁网站建设君博首选
  • 兴仁县城乡建设局网站爱站关键词查询
  • 漳州网站建设公司推荐wordpress更改主机
  • c2c商城网站建设方案英文网站注册
  • 电子商务网站的运营一般需要做哪些准备宣传片拍摄思路
  • 网站建设网页制作百度怎么做自己网站