新增了flattedMap,增强了对原生Optional的适配

新增了set函数,能通过非静态方式以及链式获取新的Opt
This commit is contained in:
achao
2021-11-06 19:56:40 +08:00
parent d1a16d94ae
commit 29d503d274
2 changed files with 53 additions and 0 deletions

View File

@@ -8,6 +8,8 @@ import org.junit.Assert;
import org.junit.Ignore;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
import java.util.NoSuchElementException;
import java.util.function.Consumer;
import java.util.stream.Stream;
@@ -132,6 +134,24 @@ public class OptTest {
Assert.assertNull(exceptionWithMessage);
}
@Test
public void flattedMapTest() {
// 和Optional兼容的flatMap
List<User> userList = new ArrayList<>();
// 以前,不兼容
// Opt.ofNullable(userList).map(List::stream).flatMap(Stream::findFirst);
// 现在,兼容
User user = Opt.ofNullable(userList).map(List::stream).flattedMap(Stream::findFirst).orElseGet(User.builder()::build);
System.out.println(user);
}
@Test
public void setTest() {
// 我一直在想既然有get为什么不能有set呢
Opt.ofNullable(User.builder().username("ruben").build()).peek(System.out::println)
.set(User.builder().username("hutool").build()).peek(System.out::println);
}
@Data
@Builder
@NoArgsConstructor