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);

      

  • 相关阅读:
    顾问和注解
    正则
    GitHub 的简单使用
    JavaScript变态题目
    常用的Javascript设计模式
    HTML5 本地裁剪上传图片
    webpack 打包
    详解js闭包
    常用的Javascript设计模式
    call appiy
  • 原文地址:https://www.cnblogs.com/baizhanshi/p/6830878.html
Copyright © 2011-2022 走看看