创建枚举类
public enum DbnameEnums {
/**扫码*/
QRCODE,
/**互联网*/
ORDER
}
这个是最简洁的写法。但是里面很多东西都是默认的,所以有点不好理解。下面等下会讲默认的东西是啥。
比较值是否相等
DbnameEnums a = DbnameEnums.QRCODE; //把DbnameEnums.QRCODE实例对象赋值给变量a
DbnameEnums b = DbnameEnums.QRCODE; //把DbnameEnums.QRCODE实例对象赋值给变量b
if(a.equals(b)){ //
...
}
枚举是类,为什么枚举可以这么比较?
QRCODE和ORDER是枚举的实例对象。但是我们要比较的是枚举的字符串值是否相等,那枚举的字符串值在哪里?枚举的字符串值默认就是QRCODE和ORDER。
上面的代码,反编译之后是这样,即QRCODE和ORDER是枚举的实例对象。
而且,枚举的实例对象的字符串值(toString方法的值)默认就是QRCODE和ORDER。
所以,才可以按上面的方法直接比较枚举实例的字符串值是否相等。
其实,更简单一点的写法是:a == b。正常情况,字符串对象是不能用==去比较的,因为这样比较的是字符串对象引用的地址值,而不是字符串值——所以必须使用equal方法比较。那为什么枚举可以这么写?因为枚举的实例是唯一的,所以不同的枚举实例引用的地址值一定是一样的,所以才可以用==比较。
但是不建议用==,虽然简洁,但是看不懂,最好还是用equals比较,因为一看就知道是比较字符串值是否相等。
应用场景
本文上面的例子其实也不适合用枚举,最适合的还是固定只有几个值的情况。