本文共 3945 字,大约阅读时间需要 13 分钟。
Optional是java.util包中的一部分,所以要有相关的引用:
import java.util.Optional;
@Testpublic void whenCreatesEmptyOptional_thenCorrect() { Optionalempty = Optional.empty(); assertFalse(empty.isPresent());}
@Testpublic void givenNonNull_whenCreatesNonNullable_thenCorrect() { String name = "baeldung"; Optionalopt = Optional.of(name); assertTrue(opt.isPresent());}
@Testpublic void givenNonNull_whenCreatesNullable_thenCorrect() { String name = "baeldung"; Optionalopt = Optional.ofNullable(name); assertTrue(optionalName.isPresent());}
public boolean isPresent() { return value != null;}
@Testpublic void givenOptional_whenIfPresentWorks_thenCorrect() { Optionalopt = Optional.of("baeldung"); opt.ifPresent(name -> System.out.println(name.length()));}
如果在Optional为null的情况下,直接使用ifPresent有可能会报NullPointerException,所以就有了下面几个函数。
@Testpublic void whenOrElseWorks_thenCorrect() { String nullName = null; String name = Optional.ofNullable(nullName).orElse("john"); assertEquals("john", name);}@Testpublic void whenOrElseGetWorks_thenCorrect() { String nullName = null; String name = Optional.ofNullable(nullName).orElseGet(() -> "john"); assertEquals("john", name);}
@Test(expected = IllegalArgumentException.class)public void whenOrElseThrowWorks_thenCorrect() { String nullName = null; String name = Optional.ofNullable(nullName).orElseThrow(IllegalArgumentException::new);}
@Test(expected = NoSuchElementException.class)public void givenOptionalWithNull_whenGetThrowsException_thenCorrect() { Optionalopt = Optional.ofNullable(null); String name = opt.get();}
@Testpublic void givenOptional_whenMapWorks_thenCorrect2() { String name = "baeldung"; OptionalnameOptional = Optional.of(name); int len = nameOptional.map(String::length).orElse(0); assertEquals(8, len);}
@Testpublic void whenOptionalFilterWorks_thenCorrect() { Integer year = 2016; OptionalyearOptional = Optional.of(year); boolean is2016 = yearOptional.filter(y -> y == 2016).isPresent(); assertTrue(is2016); boolean is2017 = yearOptional.filter(y -> y == 2017).isPresent(); assertFalse(is2017);}
优化前:
String person = "wo are you";if(person != null){ System.out.println(person);}
优化后:
Optionaloptional = Optional.of("wo are you");optional.ifPresent(System.out::println);
优化前:
String person = "wo are you";if(person != null){ System.out.println(person);} else { return DEFAULT_VALUE;}
优化后:
Optionaloptional = Optional.of("wo are you");return optional.orElse(DEFAULT_VALUE);
优化前:
String person = "wo are you";if(person != null){ System.out.println(person);} else { return createPerson();}
优化后:
Optionaloptional = Optional.of("wo are you");return optional.orElseGet(t -> createPerson());
优化前:
Person person = new Person("Tom");if(person != null){ String name = person.getLastName(); if(name != null){ return name.toLowerCase(); } else { return null; }} else { return null;}
优化后:
Optionaloptional = Optional.ofNullable(new Person("Tom"));return optional.map(p -> p.getLastName()).map(name -> name.toUpperCase()).orElse(null);
转载地址:http://gchgi.baihongyu.com/