• 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;
        }
    }
  • 相关阅读:
    hive:Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
    spark报错:Class org.apache.mapreduce.io.compress.GzipCodec not found
    flink操作mysql
    kettle解除同步条数限制
    hdfs上传文件报错,org.apache.hadoop.fs.ChecksumException:
    spark程序运行报错:java.lang.NoSuchMethodError:
    git merge的三种操作merge, squash merge, 和rebase merge
    高人制作的CocosCreator分包插件
    Android Studio 编译构建报错总结
    Mac OSX下修改 ulimit 参数
  • 原文地址:https://www.cnblogs.com/yangzhilong/p/4335673.html
Copyright © 2020-2023  润新知