类常量:必须给一个默认值。 int Spring = 1;
枚举类:可以不给默认值
enum{
Spring,Summer,Automn,WInter
}
.
枚举怎么存呢?枚举的作用到底是什么,只是在java端做类型校验的吗。
例如
public enum AuditStatus{
/**审核中*/
AUDITING(0),
/**审核通过*/
AUDIT_PASS(1),
/**审核拒绝*/
AUDIT_REJECT(2),
/**协议签署完成*/
AUDIT_SIGN(3);
private int value;
private AuditStatus(int value){
this.value = value;
}
public int getStatus(){
return this.value;
}
}
java中有const关键字,但是实际上没有使用,因此java没有真正意义上的常量。
java中使用final或者enum来实现类似常量的功能
你写的并不是常量,正确的写法是
final int Spring = 1;
这么写,编译器会在程序中直接内嵌1,而不存储Spring的元数据。
而使用 enum 值,则会存储元数据。
区别在于,前者,如果你的程序修改了,比如新程序写了final int Spring = 2;而别的程序调用它,并不知道这个值修改了,那么会造成不兼容。但是好处是这么做性能高。
相反,enum的话,可以在程序运行的时候反向查询到1对应的是spring,并且,如果你修改了枚举,那么调用它的程序也会得到修改以后的值。
enum{
Spring,Summer,Automn,WInter
}
枚举从0 开始,这个Spring是0
这样改值:
enum{
Spring = 1,Summer,Automn,WInter
}
后面的值会自增1,Summer = 2.。。。
如果枚举要对应数据库属性最好给枚举加上构造,每个枚举值指定它代表的数据库值
枚举是一种特殊的类,每个枚举值都是这个特殊类的实例,java枚举是为了更好的可读性,存数据库的话可以给枚举定义int类型的属性,数据库存枚举的属性值
枚举是对public static final 修饰的常量的一种封装
public enum StateEnum {
// 添加枚举的指定常量
online(10), offline(20);
// 必须增加一个构造函数,变量,得到该变量的值
private int mState = 0;
private StateEnum(int value) {
mState = value;
}
/**
* @return 枚举变量实际返回值
*/
public int getState() {
return mState;
}
}