你平时有哪种方式,管理常量呢?
- public static final关键字
- 接口:管理状态码或配置选项,需要在不同类中共享
- 枚举:管理有限的常量集合,具有相关的信息提示或描述
1.public static final关键字?
public class Demo{public static fianl String RESULT_YES = "1";public static fianl String RESULT_NO = "0";
}// 实例
public static class DemoServiceImpl{public static void main(String []arg){System.out.println(Demo.RESULT_YES); // 执行结果:1System.out.println(Demo.RESULT_NO); // 执行结果:0}}
2.接口?
public class Demo{// public static fianl String RESULT_YES = "1";// public static fianl String RESULT_NO = "0";// 存储上报内容public interface Uplink{String HEARTBEAT = "01";String FLOW = "03";}// 存储反馈的内容public interface Downward{String HEARTBEAT_BACK = "02";String FLOW_BACK = "04";}}// 实例
public static class DemoServiceImpl{public static void main(String []arg){System.out.println(Demo.Uplink.HEARTBEAT); // 执行结果:01System.out.println(Demo.Uplink.FLOW); // 执行结果:03System.out.println(Demo.Downward.HEARTBEAT_BACK); // 执行结果:02System.out.println(Demo.Downward.FLOW_BACK); // 执行结果:04}}
3.枚举?
public class Demo{public static fianl String RESULT_YES = "1";public static fianl String RESULT_NO = "0";public enum demo{YES(200, "执行成功"), ERROR_500(500, "程序内部执行错误"), ERROR_404(404, "请求超时");private final int code;private final String desc;demo(int code, String desc){this.code = code;this.desc = desc;}public int getCode(){return code;}public String getDesc(){return desc;}}}// 实例
public static class DemoServiceImpl{public static void main(String []arg){int code = demo.YES.getCode();System.out.println(code);String desc = demo.YES.getDesc();System.out.println(desc);}}
这三种方法的使用场景是什么?
-
public static final 是最常用的常量表示方式,可以用在任意场合;
-
接口:定义的常量,可供多个类共享;比如,我们可以通过该方法,实现对tcp协议上行/下行数据,进行分类管理;
-
枚举:像错误码,这种需要内容描述的,使用枚举实现;例如,错误类型500/ 404/ 200/ 503…(详见上文例子)