java8元组_Java8+ 函数库Vavr简介

本文介绍了Java 8+的函数式库Vavr,包括Option用于消除null检查,Tuple作为不可变的数据结构,Try处理异常,以及Function接口、不可变集合、Validation、Lazy和Pattern Matching等功能。
摘要由CSDN通过智能技术生成

1 概述

Vavr 是Java 8+中一个函数式库,提供了一些不可变数据类型及函数式控制结构。

1.1 Maven 依赖

添加依赖,可以到maven仓库中查看最新版本。

io.vavr

vavr-control

0.10.2

2. Option

Option的作用是消除代码中的null检查。在Vavr中Option是一个对象容器,与Optional类似,有一个最终结果。 Vavr中的Option实现了Serializable, Iterable接口,并且具有更加丰富的API。在Java中,我们通常通过if语句来检查引用是否为null,以此来保证系统健壮与稳定。如果不检查会出现空指针异常。

@Test

public void givenValue_whenNullCheckNeeded_thenCorrect() {

Object object = null;

if (object == null) {

object = "someDefaultValue";

}

assertNotNull(possibleNullObj);

}

如果包含较多的if检查,同时带有嵌套语句,那么代码开始变得臃肿。Option通过将null替换为一个有效对象来解决这个问题。使用Option null值会通过None实例来表示,而非null值则是某个具体对象实例。

@Test

public void givenValue_whenCreatesOption_thenCorrect() {

Option noneOption = Option.of(null);

Option someOption = Option.of("val");

assertEquals("None", noneOption.toString());

assertEquals("Some(val)", someOption.toString());

}

代码中调用toString时,并没有进行检查来处理NullPointerException问题。Option的toString会返回给我们一个有意义的值,这里是 “None”。当值为null时,还可以指定默认值。

@Test

public void givenNull_whenCreatesOption_thenCorrect() {

String name = null;

Option nameOption = Option.of(name);

assertEquals("baeldung", nameOption.getOrElse("baeldung"));

}

当为非null时返回值本身。

@Test

public void givenNonNull_whenCreatesOption_thenCorrect() {

String name = "baeldung";

Option nameOption = Option.of(name);

assertEquals("baeldung", nameOption.getOrElse("notbaeldung"));

}

这样在处理null相关检查时,只需要写一行代码即可,与Optional类似。

3. 元组Tuple

Java中没有与元组(Tuple)相对应的结构。Tuple是函数式编程中一种常见的概念。Tuple是一个不可变,并且能够以类型安全的形式保存多个不同类型的对象。Tuple中最多只能有8个元素。

public void whenCreatesTuple_thenCorre

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值