2021-08-12

写一个简单的枚举类以及比较操作需要的注意点

/**
 * 枚举类举例<br>
 * 枚举类举例<br>
 *
 * @author jasion
 * @date 2021-08-12 18:32
 */
package com.example.openfiegndemo.controller.compare;

import java.util.Arrays;
import java.util.stream.Stream;
import org.springframework.util.ObjectUtils;

public enum TestEnum {
    //NULL,兜底的枚举
    NULL(0,""),
    //张三
    zhangsan(1,"张三"),
    //李四
    lisi(2,"李四");
    //定义枚举类的属性
    private int no;
    private String name;
    //空参构造方法,前面的权限修饰符默认是private
    TestEnum(){

    }
    //全参的
    TestEnum(int no,String name){
    this.no=no;
    this.name=name;
    }

    public int getNo() {
        return no;
    }

    public String getName() {
        return name;
    }
    //根据no获取到对应name

    public static String getNameByCode(int no){
       return Arrays.stream(TestEnum.values()).filter(s-> ObjectUtils.nullSafeEquals(s.no,no)).findFirst().orElse(NULL).name;
    }
}

注意点:
我这里根据编码获取名字是通过传入一个参数,然后用来比较,这里使用的是spring框架的一个比较方法,这个还是比较好用的,具有容错的。不然使用其它方法的话,可能出现下面的情况

package com.example.openfiegndemo.controller.compare;

import org.springframework.beans.BeanUtils;
import org.springframework.util.ObjectUtils;

public class TestCompare {
public static void main(String[] args) {

    //传参数的时候自动拆箱,所以传个null对象会报错 这是在传参的过程中报空指针异常
    Integer integer=null;

// compareTest1(integer);
//在比较的时候报空指针异常
// compareTest2(integer);
//使用spring的比较工具类进行比较
System.out.println(compareTest3(integer));
}

// public static boolean compareTest1(int a){
// return a==1;
// }
// public static boolean compareTest2(Integer a){
// return a==1;
// }

public static boolean compareTest3(Integer a){
    return ObjectUtils.nullSafeEquals(a,1);
}

}

第一种情况在传参的时候拆箱报的空指针异常,比较难发现

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容