国产精品免费嫩草研究院|无遮羞动漫在线观看AV|国产麻豆精品传媒AV国产在线|村在线观看|寂寞情人1正版|韩国床震韩国床震古|精品系列专区久久

Optional源碼解析與實踐( 二 )

  • System.out.println("optional2失敗了");
  • }
  • try {
  • Optional<Integer> optional3 = Optional.ofNullable(value1);
  • System.out.println("optional3創建了");
  • }catch (Exception e){
  • System.out.println("optional3失敗了");
  • }
  • try {
  • Optional<Integer> optional4 = Optional.of(value2);
  • System.out.println("optional4創建了");
  • }catch (Exception e){
  • System.out.println("optional4失敗了");
  • }
  • try {
  • Optional<Integer> optional5 = Optional.ofNullable(value2);
  • System.out.println("optional5創建了");
  • }catch (Exception e){
  • System.out.println("optional5失敗了");
  • }
  • }
  • 4)運行結果
    Optional源碼解析與實踐

    文章插圖
    2.3.3 值獲取方法1)源碼
    1. public T get() {
    2. if (value =https://www.huyubaike.com/biancheng/= null) {
    3. throw new NoSuchElementException("No value present");
    4. }
    5. return value;
    6. }
    2)方法說明【Optional源碼解析與實踐】get(): 如果Optional不為空 , 則返回該Optional容器中的值 , 否則拋出NoSuchElementExceptio。
    3)測試代碼
    1. public static void main(String[] args) {
    2. Integer value1 = null;
    3. Integer value2 = 1;
    4. Optional<Integer> optional1 = Optional.ofNullable(value1);
    5. Optional<Integer> optional2 = Optional.of(value2);
    6. try {
    7. Integer result=optional1.get();
    8. System.out.println("optional1的值是:"+result);
    9. }catch (Exception e){
    10. System.out.println("optional1的值獲取失敗,原因:"+e.getMessage());
    11. }
    12. try {
    13. Integer result=optional2.get();
    14. System.out.println("optional2的值是:"+result);
    15. }catch (Exception e){
    16. System.out.println("optional2的值獲取失敗,原因:"+e.getMessage());
    17. }
    18. }
    4)運行結果
    Optional源碼解析與實踐

    文章插圖
    2.3.4 判斷方法1)源碼
    1. public boolean isPresent() {
    2. return value != null;
    3. }
    4. public void ifPresent(Consumer<? super T> consumer) {
    5. if (value != null)
    6. consumer.accept(value);
    7. }
    8. public T orElse(T other) {
    9. return value != null ? value : other;
    10. }
    11. public T orElseGet(Supplier<? extends T> other) {
    12. return value != null ? value : other.get();
    13. }
    14. public <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) throws X {
    15. if (value != null) {
    16. return value;
    17. } else {
    18. throw exceptionSupplier.get();
    19. }
    20. }
    2)方法說明