静态常量是编译期常量,如果其值被改变,那么使用方需要重新编译。项目初始化的时候会被全部加载到内存中,消耗内存。
枚举的创建可以把一类具有相同意义的常量放在一个相同的枚举类里,获取里面的常量值是在类加载使用的时候使用反射机制获取的值。
枚举类的创建:
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);
最新评论
命令: nload
真是个良心站点哇,大公无私,爱了爱了
还可以直接搞一张映射表,存 uid | time | source_index, 第一次直接查对应的 time 选出前100, 第二次直接用 CompleteFuture 去分别用 source_in
干得漂亮,多个朋友堵条路
2021.2.2版本的不适用吧
现在还可以用么
激活码有用,感谢分享
激活码的地址打不开了