写一个简单的枚举类以及比较操作需要的注意点
/**
* 枚举类举例<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);
}
}
第一种情况在传参的时候拆箱报的空指针异常,比较难发现