JAVA8之妙用Optional解决判断Null为空的问题

直接上实战

//以前写法
public String getCity(User user)  throws Exception{
        if(user!=null){
            if(user.getAddress()!=null){
                Address address = user.getAddress();
                if(address.getCity()!=null){
                    return address.getCity();
                }
            }
        }
        throw new Excpetion("取值错误");
  }

    //java8写法
    public String getCity(User user) throws Exception{
    return Optional.ofNullable(user)
                   .map(u-> u.getAddress())
                   .map(a->a.getCity())
                   .orElseThrow(()->new Exception("取指错误"));
}

主程序中

//以前写法
if(user!=null){
    dosomething(user);
}

//java8的写法
 Optional.ofNullable(user)
    .ifPresent(u->{
        dosomething(u);
});
//以前的写法
public User getUser(User user) throws Exception{
    if(user!=null){
        String name = user.getName();
        if("zhangsan".equals(name)){
            return user;
        }
    }else{
        user = new User();
        user.setName("zhangsan");
        return user;
    }
}

//java8的写法
public User getUser(User user) {
    return Optional.ofNullable(user)
                   .filter(u->"zhangsan".equals(u.getName()))
                   .orElseGet(()-> {
                        User user1 = new User();
                        user1.setName("zhangsan");
                        return user1;
                   });
}

原文地址:https://blog.51cto.com/yushiwh/2459289

时间: 2024-11-05 14:51:38

JAVA8之妙用Optional解决判断Null为空的问题的相关文章

velocity模板判断null和空字符串方法

在web开发中,经常会遇到一个需求是,判断变量为空(null)或者空字符串(""),从而影响页面的展示逻辑,velocity中有相应的方法可以判断.当然也可以在java后端转化到有效值再判断.以下是本人在开发中自己总结的,希望对大家有所帮助! (1)判断null #if( $name  ==  null) something code #end (2)判断null或者false #if( !$name) something code #end (3)判断null或者空字符串 #if(

mysql 判断null 和 空字符串

1.在mysql中null 不能使用任何运算符与其他字段或者变量(函数.存储过程)进行运算.若使用运算数据就可能会有问题. 2.对null 的判断: 创建一个user表:id 主健 name 可以为空 select * from user; insert into user values('33',null);  ##创建一条name为空的数据 insert into user values('222','');  ##创建一条为空字符的数据 用isnull判断是否为空:只有name 为null

【Java8实战】使用Optional取代null

在Java中对一个空对象进行操作时,便会抛出最常见的异常NullPointerException.为了改善这个问题,Java 8中提供了一个java.util.Optional<T>类型.Optional类的Javadoc描述如下:这是一个可以为null的容器对象.如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象.下面介绍Optional类的使用方法. 假如有一个像下面这样的类层次结构: class Department {   private Employ

Java8新特性之Optional

空指针异常一直是困扰Java程序员的问题,也是我们必须要考虑的.当业务代码中充满了if else判断null 的时候程序变得不再优雅,在Java8中提供了Optional类为我们解决NullPointerException. 我们先来看看这段代码有什么问题? 1 2 3 4 5 6 7 8 9 class User {     String name;     public String getName() {         return name;     } } public static

夯实Java基础(二十三)——Java8新特征之Optional类

一.简介 Optional类是Java8为了解决null值判断问题,借鉴google guava类库的Optional类而引入的一个同名Optional类,使用Optional类可以避免显式的null值判断(null的防御性检查),避免null导致的NPE(NullPointerException). 我们来看一段代码: public static String getGender(Student student) { if(null == student) { return "Unkown&q

Atitit. null错误的设计 使用Optional来处理null

Atitit. null错误的设计 使用Optional来处理null 然后,我们再看看null还会引入什么问题. 看看下面这个代码: String address = person.getCountry().getProvince().getCity(); 如果你玩过一些函数式语言(Haskell.Erlang.Clojure.Scala等等),上面这样是一种很自然的写法.用Java当然也可以实现上面这样的编写方式. 但是为了完满的处理所有可能出现的null异常,我们不得不把这种优雅的函数编程

乐字节-Java8新特性之Optional

上一篇小乐带大家了解了Java新特性之Stream,接下来将会继续述说Java新特性之Optional Optional<T>类(java.util.Optional)是一个容器类,代表一个值存在或不存在,原来用null表示一个值不存在,现在Optional可以更好的表达这个概念.并且可以避免空指针异常. 1.of 为非null的值创建一个Optional,如果值为null,则会抛出NullPointerException Optional<Integer> optional =

乐字节Java8核心特性之Optional类

大家好啊,上次小乐给大家介绍了Java8最最重要的一个特性——Stream流,点击可以回顾哦. Optional<T>类(java.util.Optional)是一个容器类,代表一个值存在或不存在,原来用null表示一个值不存在,现在Optional可以更好的表达这个概念.并且可以避免空指针异常. 1.Optinal对象构建&值获取方法 方法 操作描述 <T> Optional<T> of(T value) 为非null的值创建一个Optional,如果值为nu

ios 判断字符串为空和只为空格解决办法

ios 判断字符串为空和只为空格解决办法- (BOOL)isBlankString:(NSString *)string{ if (string == nil) { return YES; } if (string == NULL) { return YES; } if ([string isKindOfClass:[NSNull class]]) { return YES; } if ([[string stringByTrimmingCharactersInSet:[NSCharacterS