zoukankan      html  css  js  c++  java
  • JAVA中定义常量的几种方式

    1、最古老的

    //未处理
    public static final Integer PROCESS_STATUS_UNTREATED = 0;
    //已接收
    public static final Integer PROCESS_STATUS_ACCPECTED = 1; 
    //已处理
    public static final Integer PROCESS_STATUS_PROCESSED = 2;

    2、改进版的

    public static final class PROCESS_STATUS{
            //未处理
            public static final Integer UNTREATED = 0;
            //已接收
            public static final Integer ACCPECTED = 1;
            //已处理
            public static final Integer PROCESSED = 2;
    }

    3、枚举版(好处显而易见,既可以获取code又能获取汉字),以后定义常量采用此方法

    /**
     * 常量的枚举定义接口
     * @author yangzhilong
     * @param <T>
     *
     */
    public interface BaseConstant<T> {
        T getCode();
        String getDesc();
    }
    /**
     * 操作类型
     * @author yangzhilong
     *
     */
    public enum OPERATION_TYPE implements BaseConstant<String>{
        ADD("add", "新增"),
        UPDATE("update", "修改"),
        DELETE("delete", "删除");
    
        private String code;
        private String desc;
        OPERATION_TYPE(String key, String value) {
            this.code = key;
            this.desc = value;
        }
    
        @Override
        public String getCode() {
            return code;
        }
    
        @Override
        public String getDesc() {
            return desc;
        }
    }

     调用方式:

    //获取编码
    PROCESS_STATUS.UNTREATED.getCode();
    //获取描述
    PROCESS_STATUS.UNTREATED.getDes();

     根据枚举类型和编码获取code的描述:

    public class ConstantUtils {
        
        /**
         * 根据枚举的code获取desc
         * @param <T>
         * @param clazz
         * @param codeValue
         * @return
         */
        public static <T extends Enum<T> & BaseConstant<T>>  String getEnumValue(Class<T> clazz ,
                Object codeValue) {
            String result = null;
            T[] enums = clazz.getEnumConstants();
            for(T obj : enums){
                if(obj.getCode().equals(codeValue)){
                    result = obj.getDesc();
                    break;
                }
            }
            return result;
        }
        
        /**
         * 根据枚举的code获取整个枚举对象
         * @param <T>
         * @param clazz
         * @param codeValue
         * @return
         */
        public static <T extends Enum<T> & BaseConstant<T>>  BaseConstant<T> getEnum(Class<T> clazz ,
                Object codeValue) {
            BaseConstant<T> result = null;
            T[] enums = clazz.getEnumConstants();
            for(T obj : enums){
                if(obj.getCode().equals(codeValue)){
                    result = obj;
                    break;
                }
            }
            return result;
        }
    }
  • 相关阅读:
    源码阅读笔记 BiLSTM+CRF做NER任务(一)
    leetcode题 寻找两个有序数组的中位数
    动手实现感知机算法,多分类问题
    剪绳子 牛客网-剑指Offer_编程题
    [SCOI2016]妖怪 牛客网的ACM省选题,个人看法,欢迎交流
    BERT 学习笔记
    解决图着色问题 python代码实现
    维吉尼亚密码及程序实现
    迪菲-赫尔曼密钥交换
    分布式系统组件之配置中心
  • 原文地址:https://www.cnblogs.com/yangzhilong/p/4335673.html
Copyright © 2011-2022 走看看