zoukankan      html  css  js  c++  java
  • 枚举类的创建和使用

    静态常量是编译期常量,如果其值被改变,那么使用方需要重新编译。项目初始化的时候会被全部加载到内存中,消耗内存。

    枚举的创建可以把一类具有相同意义的常量放在一个相同的枚举类里,获取里面的常量值是在类加载使用的时候使用反射机制获取的值。

    枚举类的创建:

    public enum BooleanType {
    
        NULL(""),
    
        TRUE("1"),
    
        FALSE("0");
    
        BooleanType(String value) {
            EnumUtil.changeNameTo(this,value);
        }
    }
    

    获取枚举值的数值的帮助类:

    public class EnumUtil {
        /**
         * 获取枚举值
         *
         * @param enumInstance 枚举常量
         * @param value        枚举常量的value
         * @param <T>          枚举的类型参数
         */
        public static <T extends Enum<T>> void changeNameTo(T enumInstance, String value) {
            try {
                Field fieldName = enumInstance.getClass().getSuperclass().getDeclaredField("name");
                fieldName.setAccessible(true);
                fieldName.set(enumInstance, value);
                fieldName.setAccessible(false);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
    }
    

    帮助类这里使用了反射机制。

        /**
         * 枚举类型的比较,包括null
         *
         * @param enum1 枚举常量1
         * @param enum2 枚举常量2
         * @return 如果相等返回true, 否则返回false
         */
        public static boolean enumEquals(Enum enum1, Enum enum2) {
            if (enum1 == null && enum2 == null) {
                return true;
            } else if (enum1 != null) {
                return enum1.equals(enum2);
            } else {
                return enum2.equals(enum1);
            }
        

    以上是枚举值的比较逻辑。

    枚举的使用:

    System.out.println(BooleanType.FALSE);

      

  • 相关阅读:
    json数据转化格式
    远程安装软件控制台
    杂、记忆点
    布局(杂,细节处理)
    自己修改代码后push推送到zhile
    js中call和apply的区别 / 函数的call、apply以及bind的作用与区别
    一元运算符a++、++a、a--、--a
    javascript基础语法和算术运算符
    不同空格符号的区别
    2020.12.11面试两家
  • 原文地址:https://www.cnblogs.com/baizhanshi/p/6830878.html
Copyright © 2011-2022 走看看