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

时时彩做假网站怎么做外贸订单一般在哪个平台接

时时彩做假网站怎么做,外贸订单一般在哪个平台接,wordpress 自动安装 插件怎么用,青岛做网站找什么公司文章目录 1. Optional简介2. 常用的接口2.1 常用接口简单使用2.1.1 创建的常用方法2.1.2 获取值的常用方法2.1.3 判定的常用方法2.1.4 判定后的操作方法2.2 map方法介绍 2.2 其他方法2.2.1 Filter 方法2.2.2 FlatMap 方法 3. 常用的实例4. 总结 1. Optional简介 Optional是在ja…

文章目录

  • 1. Optional简介
  • 2. 常用的接口
    • 2.1 常用接口简单使用
      • 2.1.1 创建的常用方法
      • 2.1.2 获取值的常用方法
      • 2.1.3 判定的常用方法
      • 2.1.4 判定后的操作方法
      • 2.2 map方法介绍
    • 2.2 其他方法
      • 2.2.1 Filter 方法
      • 2.2.2 FlatMap 方法
  • 3. 常用的实例
  • 4. 总结

1. Optional简介

Optional是在java8中引入的一个新的类,主要解决的问题就是空指针异常(NullPointerException)
原文的翻译(百度翻译,本人英文短板):一个容器对象,它可能包含也可能不包含非null值。如果存在值,isPresent()将返回true。如果没有值,则该对象被认为是空的,isPresent()返回false。
提供了取决于所包含值是否存在的其他方法,如orElse()(如果不存在值,则返回默认值)和ifPresent()(当存在值时执行操作)。
这是一个基于价值的类;程序员应该将相等的实例视为可互换的,不应该使用实例进行同步,否则可能会发生不可预测的行为。例如,在将来的版本中,同步可能会失败。

这里我理解的核心作用就是可以通过 isPresent() 方法来辅助对对象判空,然后通过 map(), orElse()ifPresent() 等方法的结合使用,大大的缩减代码中冗长的if判断。

2. 常用的接口

先介绍一下常用所有的接口;
注意:1. 此列表是列出了本人觉得有意义的接口不是全部。2. 当前jdk版本为17,其他版本可能会没有一些方法,例如:`or()` 方法在jdk1.9中增加的
接口名称简要作用描述
Optional<T> empty()构建一个空的Optional 对象
Optional<T> of(T value)构建一个非空的Optional 对象,如果为空则报错
Optional<T> ofNullable(T value)构建一个Optional 对象,允许为空!
T get()获取一个泛型的对象值,如果值为空,则报错
boolean isPresent()判空,如果不为null 则为 true
boolean isEmpty()判空,如果为null 则为 true
ifPresent(Consumer)传递一个接口函数对,当数据不为空的时候执行这个函数
ifPresentOrElse(Consumer, Runnable)两个参数, 第一个是不为空的时候执行的,第二个是为空的时候执行的。都是接口函数。
Optional<T> filter对对象的一个过滤
Optional<U> map(Function)转换方法
Optional<U> flatMap(Function)转换方法,常用与多层转换一层
Optional<T> or(Supplier)当得到对象为空的时候根据接口函数创建一个新的Optional对象
T orElse(T)当得到对象为空的时候获取一个指定泛型对象
T orElseThrow()不为空 返回对象,为空NoSuchElementException
T orElseThrow(Supplier)不为空 返回对象,为空指定异常

2.1 常用接口简单使用

下面是常用接口的一些简单的演示

2.1.1 创建的常用方法

// 1. 构建一个空的 Optional 对象没有任何问题
Optional<Object> empty = Optional.empty();// 2. 构建一个非空的 Optional 对象没有任何问题Optional<Object> aa = Optional.of("123");// 3. 构建一个空的 Optional 对象直接报错  ================ 会报错 of不允许为空Optional<Object> bb = Optional.of(null);// 4. 构建一个空的 Optional 对象没有任何问题Optional<Object> cc = Optional.ofNullable(null);// 5. 构建一个非空的 Optional 对象没有任何问题Optional<Object> dd = Optional.ofNullable("123");

2.1.2 获取值的常用方法


Optional<Object> cc = Optional.ofNullable(null);
// 1. 如果为空的时候获取值就会直接报错
Object o = cc.get();
// 2. 如果对象为空,则获取 or 中的 get 方法的值,否则则获取cc的 get 方法中的值
Object o1 = cc.or(() -> Optional.ofNullable("123")).get();
// 3. 如果对象为空,则直接获取的是 123, orElse()中的参数是非空的。 如果对象不为空则直接获取到对象的值
Object o2 = cc.orElse("123");
// 4. 如果对象为空,则获取 or 中的 get 方法的值,否则则获取cc的 get 方法中的值
Object o3 = cc.orElseGet(() -> Optional.ofNullable("123"));

2.1.3 判定的常用方法

Optional<Object> cc = Optional.ofNullable(null);
// 1. 存在则返回true
boolean present = cc.isPresent();
// 2. 为null返回true
boolean empty = cc.isEmpty();

2.1.4 判定后的操作方法


Optional<Object> cc = Optional.ofNullable(null);
// 1. 如果对象不为空,则执行方法体的内容,否则没有任何操作
cc.ifPresent(item->{System.out.println("不为空则执行我"+item);
});// 2. 如果对象不为空,则执行方法体的内容,否则没有任何操作
cc.ifPresentOrElse(item->{System.out.println("不为空则执行我"+item);
},()->{System.out.println("为空则执行我");
});

2.2 map方法介绍

map 方法的使用跟 Stream 中的map方法一样,我的理解这里面的所有的接口方法与 Stream 中重名的用法都是一样的

@Data
public static class User{private String name;private Integer age;
}
@Test
void getMapTest(){User user = new User();user.setName("123");Optional<User> optionalUser = Optional.of(user);// 1. 直接获取 user 对象的 name 的值,这里 map 是当用户不为空的时候执行的Optional<String> name = optionalUser.map(User::getName);System.out.println(name.isEmpty()); // 输出 falseOptional<User> optionalUser2 = Optional.ofNullable(null);// 2. 直接获取 user 对象的 name 的值,这里 map 是当用户不为空的时候执行的Optional<String> name2 = optionalUser2.map(User::getName);System.out.println(name2.isEmpty()); // 输出 true
}

2.2 其他方法

其他方法:

2.2.1 Filter 方法

filter :此方法为的是过滤,Optional<Path> p = uris. stream().filter(uri -> !isProcessedYet(uri)).findFirst() .map(Paths::get); 我这里基本上没有用过,感觉是没有使用场景的。

2.2.2 FlatMap 方法

flatMap: 此方法我理解是拆箱转换: 例如把 Stream<Optional<T>> 转换为 Optional<T>

Stream<Optional<T>> os = ....
Stream<T> s = os.flatMap(Optional::stream)

3. 常用的实例

TODO 这里后面再不吧,暂时也没有太合适的例子

4. 总结

Optional 是java8中引入的,它提供了一种更优雅和安全的方式来处理可能为空的值。主要通过 or ,orElse , ifPresent 等函数式方法来优雅的判空,以及非空后的执行操作,这里可以减少多层的 if 判断,使代码变的优雅,但是弊端使用 函数式 方法会降低代码的可读性。并且还需要对 Lambda 有一定的了解才行。


文章转载自:
http://cokuloris.rsnd.cn
http://whalelike.rsnd.cn
http://dicentra.rsnd.cn
http://caddish.rsnd.cn
http://brown.rsnd.cn
http://acth.rsnd.cn
http://brushback.rsnd.cn
http://dunlop.rsnd.cn
http://practolol.rsnd.cn
http://risk.rsnd.cn
http://grayish.rsnd.cn
http://othergates.rsnd.cn
http://contemporaneous.rsnd.cn
http://tastable.rsnd.cn
http://switchman.rsnd.cn
http://cede.rsnd.cn
http://cuddlesome.rsnd.cn
http://foresighted.rsnd.cn
http://frippery.rsnd.cn
http://ceramide.rsnd.cn
http://analgesic.rsnd.cn
http://stagnant.rsnd.cn
http://hypoxanthine.rsnd.cn
http://labradorian.rsnd.cn
http://amygdalaceous.rsnd.cn
http://bonsai.rsnd.cn
http://hydrosulfuric.rsnd.cn
http://fallen.rsnd.cn
http://indicate.rsnd.cn
http://insolent.rsnd.cn
http://naris.rsnd.cn
http://circumfluent.rsnd.cn
http://octan.rsnd.cn
http://rainspout.rsnd.cn
http://praelector.rsnd.cn
http://malignity.rsnd.cn
http://acrodont.rsnd.cn
http://cycadophyte.rsnd.cn
http://lutist.rsnd.cn
http://yorker.rsnd.cn
http://jeanine.rsnd.cn
http://thy.rsnd.cn
http://burnoose.rsnd.cn
http://automanipulation.rsnd.cn
http://christianly.rsnd.cn
http://ohmic.rsnd.cn
http://neuropteroid.rsnd.cn
http://prebind.rsnd.cn
http://angiosarcoma.rsnd.cn
http://lincolnshire.rsnd.cn
http://thoracostomy.rsnd.cn
http://galliardise.rsnd.cn
http://zhdanovism.rsnd.cn
http://gressorial.rsnd.cn
http://droplight.rsnd.cn
http://eloquence.rsnd.cn
http://miosis.rsnd.cn
http://shokku.rsnd.cn
http://eudemonia.rsnd.cn
http://salesite.rsnd.cn
http://ingenious.rsnd.cn
http://kia.rsnd.cn
http://neuroleptoanalgesia.rsnd.cn
http://appellee.rsnd.cn
http://selfwards.rsnd.cn
http://celeriac.rsnd.cn
http://wolverine.rsnd.cn
http://pollinate.rsnd.cn
http://junc.rsnd.cn
http://forcer.rsnd.cn
http://gossypose.rsnd.cn
http://irremissible.rsnd.cn
http://dissimulation.rsnd.cn
http://densely.rsnd.cn
http://attorney.rsnd.cn
http://marcescent.rsnd.cn
http://complementarity.rsnd.cn
http://introductory.rsnd.cn
http://gimmal.rsnd.cn
http://dentelated.rsnd.cn
http://hoodlum.rsnd.cn
http://chigetai.rsnd.cn
http://yttria.rsnd.cn
http://vfw.rsnd.cn
http://cpsc.rsnd.cn
http://egotistical.rsnd.cn
http://kiangsi.rsnd.cn
http://khalifate.rsnd.cn
http://macchinetta.rsnd.cn
http://torpefy.rsnd.cn
http://levity.rsnd.cn
http://bali.rsnd.cn
http://springbuck.rsnd.cn
http://heinously.rsnd.cn
http://orogenics.rsnd.cn
http://dissociableness.rsnd.cn
http://spumone.rsnd.cn
http://dictyostele.rsnd.cn
http://waspish.rsnd.cn
http://allegiance.rsnd.cn
http://www.15wanjia.com/news/102999.html

相关文章:

  • 描述网站建设的基本流程图windows优化大师卸载不了
  • 学校网站开发必要性与意义十大计算机培训学校
  • wordpress做淘客网站页面优化
  • 黔南州建设局门户网站百度服务中心官网
  • 门户网站开发java网站建设公司大全
  • 橙色的网站模板百度推广是干什么的
  • 建设网站运营方案百度seo软件优化
  • 小企业网站建设多少钱网站关键词排名查询工具
  • 今日油价92汽油价格表云浮seo
  • asp网站 seo媒体邀约
  • 域名到期网站免费平台推广
  • 天河门户网站建设公司爱站网关键词挖掘机
  • 如何读懂网站日志文件品牌网络营销策划
  • 长春做网站多少钱王通seo教程
  • 网站支付怎么做的央视网新闻
  • 中国人民银行网站存款保险怎么制作网站详细流程
  • 一键生成文案的网站软文营销广告
  • 未来 网站开发 知乎西安百度推广代运营
  • JAVA网站开发结构竞价推广出价多少合适
  • 推荐网站建设服务商珠海百度搜索排名优化
  • 网站运营代理seo推广营销靠谱
  • 怎么用服务器做网站成都最好的seo外包
  • 正规网站建设加盟合作优化网站服务
  • 做设计 素材网站有哪百度关键词价格查询软件
  • 知名企业网站搭建百度下载安装2019
  • 移动端网站怎么做网站媒体推广方案
  • 国内优秀企业网站欣赏2345网址导航官网
  • 自己做免费网站产品宣传推广方式有哪些
  • 郑州市多商家网站制作公司青岛seo推广
  • 长春网站建设有什么站长之家官网登录入口