当前位置: 首页 > 编程笔记 >

JAVA Optional类用法分享

穆彬郁
2023-03-14
本文向大家介绍JAVA Optional类用法分享,包括了JAVA Optional类用法分享的使用技巧和注意事项,需要的朋友参考一下

Optional在JAVA中被定义为一个容器类,更确切的说只存一个元素的容器。

container object which may or may not contain a non-null value.

Optional类结构 Optional属性

Optional类中包含两个属性:

类属性:EMPTY 对象属性:value

EMPTY属性用来存放一个value为null的Optional对象。
value属性用来存放非null对象。

Optional方法

Optional的有两个构造方法,都被private修饰。

private Optional() {
  this.value = null;
}
private Optional(T value) {
  this.value = Objects.requireNonNull(value);
}

无参构造方法用来初始化EMPTY。有参构造方法用来初始化非null对象。

因为构造方法被修饰为私有的,Optional想要实例化对象只能通过类方法调用。Optional提供三个类方法。

empty:返回value为null的Optional对象 of:返回value非null的Optional对象 ofNullable:value的值根据参数是否为null返回对应的Optional对象

public static<T> Optional<T> empty() {
  Optional<T> t = (Optional<T>) EMPTY;
  return t;
}

public static <T> Optional<T> of(T value) {
  return new Optional<>(value);
}

public static <T> Optional<T> ofNullable(T value) {
  return value == null ? empty() : of(value);
}

实例方法介绍

方法 参数类型 返回类型 说明
get T value为null抛出NoSuchElementException异常
isPresent boolean value为null则返回false
ifPresent Consumer<? super T> void 如果Optional实例有值则为其调用consumer,否则不做处理
filter Predicate<? super T> Optional<T> 如果值存在并且满足提供的谓词,就返回包括该值的Optional对象;否则返回一个空的Optional对象
map Function<? super T, ? extends U> Optional<U> 如果值存在,就对该值执行提供的mapping函数调用,返回Optional<U>对象
flatMap Function<? super T, Optional<U>> Optional<U> 如果值存在,就对该值执行提供的mapping函数调用,返回非null Optional对象
orElse T T 如果有值则将其返回,否则返回一个默认值
orElseGet Supplier<? extends T> T 如果有值则将其返回,否则返回一个由指定的Supplier接口生成的值
orElseThrow Supplier<? extends X> <X extends Throwable> 如果有值则将其html" target="_blank">返回,否则抛出一个由指定的Supplier接口生成的异常

 类似资料:
  • 我快要哭了! 我已经做了很多谷歌搜索,但是我不能让这段代码按照我想要的方式工作。 在Wordpress中,我有以下分类法: https://dl.dropboxusercontent.com/u/30177707/wo-tax.png 我想要的是孩子被显示为特定的职位,如果没有孩子,我想只显示父母。 这是我编辑过的截图,所以它能更好地描述我的问题。https://dl.dropboxusercon

  • 分类法可以被认为是对基于分类术语显示特定内容的网站内容进行分类。 Drupal分类法由 - 组成 - Term - 用于管理或描述内容。 Vocabulary - 这是一组术语。 以下是使用Drupal Taxonomy的步骤 - Step 1 - 转到Structure并单击Taxonomy选项。 Step 2 - 您可以通过单击“ Add vocabulary链接为Drupal分类法创建新词汇

  • 有没有办法使用“ACF分类法字段”来影响“自定义分类法”的帖子计数?现在我正在使用ACF分类法字段,但我的自定义分类法分配了0篇文章。 这可能吗?我尝试这样做是因为它对最终用户更友好,ACF更灵活;如果我需要用户只选择一个分类法并进行其他限制,我可以对其进行限制。

  • 本文向大家介绍用Python实现KNN分类算法,包括了用Python实现KNN分类算法的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Python KNN分类算法的具体代码,供大家参考,具体内容如下 KNN分类算法应该算得上是机器学习中最简单的分类算法了,所谓KNN即为K-NearestNeighbor(K个最邻近样本节点)。在进行分类之前KNN分类器会读取较多数量带有分类标签的样本

  • 本文向大家介绍Zend Framework分页类用法详解,包括了Zend Framework分页类用法详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Zend Framework分页类用法。分享给大家供大家参考,具体如下: 1、分页类Pagination.php,最好是把这个类放在Zend目录下 2、在indexController.php中的indexController Funct

  • 本文向大家介绍python集合类型用法分析,包括了python集合类型用法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了python集合类型用法。分享给大家供大家参考。具体分析如下: python的集合类型和其他语言类似, 是一个无序不重复元素集,我在之前学过的其他的语言好像没有见过这个类型,基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersect