静态常量是编译期常量,如果其值被改变,那么使用方需要重新编译。项目初始化的时候会被全部加载到内存中,消耗内存。
枚举的创建可以把一类具有相同意义的常量放在一个相同的枚举类里,获取里面的常量值是在类加载使用的时候使用反射机制获取的值。
枚举类的创建:
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);
最新评论
徒弟可以A师傅,学生可以A老师,为什么外包不能A正式,我觉得很正常。异性相吸这是宇宙真理
PHP天下第一(狗头叼花)
第一个不需要关注公主号直接给激活码的帖子!
客户端超时断开后,服务端如果没有设置超时机制,那也会继续等待处理,万一这期间有消息到了,那不是就接受到消息处理了,但是也没有办法返回到客户端,导致消息丢失。
企业级GO项目开发实战 Kubernetes权威指南 第六版
https://pan.baidu.com/s/1q3bnTncIACKoTZFxvx7BQw?pwd=ii7n
RabbitMQ精讲,项目驱动落地,分布式事务拔高 有吗?
Spring Cloud Alibaba 微服务架构实战 https://pan.baidu.com/s/1jF5voFRoeF0lYAzAPBWSbw?pwd=chqk