梦想还是要有的,万一忘了咋办?

0%

Java状态常量

在Java系统里面经常面对状态常量,今天突然很纠结如何做到最佳最优雅的处理状态常量;我总结了之前遇到的方案,感觉都挺不理想的。欢迎您留下你认为的最佳方案。

静态常量

示例

1
2
3
4
public interface Const{
int OK=0;
int ERROR=1;
}

枚举

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public enum Const{
OK(0,"成功"){
public void doSth(){
....
}
}
,ERROR(1,"失败"){
public void doSth(){
....
}
},;
   public final int val;
public final String name;
 
   private Const(int val, String name){
this.val=val;
this.name=name;
}
public abstract void doSth();
}

静态内部枚举

示例

1
2
3
4
public interface Const{
enum User{}
enum Order{}
}

静态常量+工具类

示例

1
2
3
4
5
6
7
8
9
10
11
public interface Const{
int OK=0;
int ERROR=1;
}
public class ConstKit{
public void doSth(int const){
switch(const):
case Const.OK: ....
break;
}
}

总结

用哪种好呢?不管使用哪种,一定要确保 常量的不可修改特性;

思考

系统内多个表都可以使用0、1、2 标识状态,比如 用户表:0正常、1锁定、2异常,文章表:0发布、1未发布、2删除 等等;这种情况是否可以使用同一套 状态常量?优缺点呢?