public enum CacheTime { DEFAULT_WIFI(60), DEFAULT_MOBILE(6 * 60), NO_EXPIRED_ALL(365 * 24 * 60); public final long value; public static final int MINUE = 1000 * 60; private CacheTime(long s) { this.value = s * MINUE; } }
引用时:
CacheTime.DEFAULT_WIFI.value;
关于枚举类型:每一个枚举类型隐式继承自java.lang.Enum,由于Java不支持多重继承,所以枚举类型不能再继承其它类。
说说上面的代码吧。定义了一个缓存有效时间的枚举类。构造函数是私有的。
DEFAULT_WIFI等都是枚举类型,后面的参数是干什么用的?
构造用的,调用私有的CacheTime(long s)构造方法,初始化。所以,每一个枚举类型在其它地方使用的时候,可以直接用CacheTime.DEFAULT_WIFT.value.
这些enum type都包含了变量value,MINUE,而且都继承了Enum类,可以调用Enum类中的公有方法。
关于枚举类的构造方法:必须是私有(private)或者包级私有(default)。不可以手动调用其构造方法。
Oracle的tutorial:
http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html