知识点记录-JAVA8常用语法特点Optional

知识点记录-JAVA8常用语法特点Optional

练习Optional

package com.test.jdk8;

import java.util.Optional;
import java.util.OptionalDouble;

public class TestOptional {

    private int ad = 16;
    private int qe = 156;

    private String string = "156;system";

    public static void main(String[] args) {

        Integer integer1 = 123;
        System.out.println("integer1=" + Optional.ofNullable(integer1).orElse(5));

        Optional<Integer> optionalInteger1 = Optional.ofNullable(integer1);
        if (optionalInteger1.isPresent()) {
            System.out.println("optionalInteger1有值" + optionalInteger1.get());
        } else {
            System.out.println("optionalInteger1没有值");
        }

        Integer integer2 = null;
        System.out.println("integer2=" + Optional.ofNullable(integer2).orElse(5));
//        System.out.println(Optional.of(integer2).orElse(5));   //null值用Optional.of,有异常NullPointerException

        Optional<Integer> optionalInteger2 = Optional.ofNullable(integer2);
        if (optionalInteger2.isPresent()) {
            System.out.println("optionalInteger2有值" + optionalInteger2.get());
        } else {
            System.out.println("optionalInteger2没有值");
        }

        Optional<Integer> optionalInteger3 = Optional.of(5);
        System.out.println("optionalInteger3=" + optionalInteger3.get());

        try {
            OptionalDouble optionalDouble = OptionalDouble.empty();
            System.out.println("optionalDouble.get()=" + optionalDouble.getAsDouble());
        } catch (Exception e) {
            System.err.println("optionalDouble.get异常" + e.getLocalizedMessage());
        }

        try {
            Optional<String> stringOptional = Optional.empty();
            System.out.println("stringOptional.get()=" + stringOptional.get());
        } catch (Exception e) {
            System.err.println("stringOptional.get异常" + e.getLocalizedMessage());
        }

        String string1 = "string1";
        Optional<String> stringOptional1 = Optional.of(string1);
        System.out.println("stringOptional1.isPresent()=" + stringOptional1.isPresent());
        System.out.println("stringOptional1.get()=" + stringOptional1.get());

        string1 = null;
        string1 = Optional.ofNullable(string1).orElse("string1 orElse");
        System.out.println("string1=" + string1);

        String string2 = null;
        Optional<String> stringOptional2 = Optional.ofNullable(string2);
        stringOptional2.ifPresent(System.out::println);

        User user1 = null;
        System.out.println("user1=" + Optional.ofNullable(user1).orElse(createUser()));
        System.out.println("user1=" + Optional.ofNullable(user1).orElseGet(TestOptional::createUser));

//        user1 = new User("user1",1);
        try {
            Optional.ofNullable(user1).orElseThrow(() -> new Exception("user1==null"));
        } catch (Exception e) {
            System.err.println(e.getMessage());
        }

        String name1 = Optional.ofNullable(user1).map(u -> u.getName()).orElse("default-name1");
        System.out.println("name1=" + name1);

        User user2 = new User("user2", 2);
        System.out.println("user2=" + Optional.ofNullable(user2).orElse(createUser("name20", 20)));
        System.out.println("user2=" + Optional.ofNullable(user2).orElseGet(() -> createUser("name15", 15)));

        String name2 = Optional.ofNullable(user2).map(u -> u.getName()).orElse("def-name2");
        System.out.println("name2=" + name2);
    }

    private static User createUser() {
        System.out.println("createUser");
        return new User("user", 0);
    }

    private static User createUser(String name, int age) {
        System.out.println("createUser");
        return new User(name, age);
    }

    public static class User {
        private String name;
        private int age;

        public User() {
        }

        public User(String name, int age) {
            this.name = name;
            this.age = age;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }

        @Override
        public String toString() {
            return "User{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    '}';
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值