还记得上一篇是如何运用Enum来定义一周的的吗?
public enum Weekday {
monday,tuesday,wensday,thursday,friday,saturday,sunday
}
显然,enum很像特殊的class,为了一探究竟,需要来看一下Weekday.java文件的字节码:
通过javap命令,查看字节码得知,实际上enum声明定义的Weekday就是一个类,该类继承(extends )自 java.lang.Enum类。
查看java api文档,其中对java.lang.Enum类的介绍非常简单明了,它就是所有 Java 语言枚举类型的公共基本类。
再来看看我们通常通过变量来实现Weekday的代码:
public static final String monday = "1";
public static final String tuesday = "2";
public static final String wensday = "3";
public static final String thursday = "4";
public static final String friday = "5";
public static final String saturday = "6";
public static final String sunday = "7";
其中字码中定义变量部分是不是与上面的代码很像,那我们来总结一下吧!
- 枚举类型声明定义的就是一个类,类是final类型,说明不可以被继承
- 其枚举值(monday、tuesday、wensday…)都是类Weekday的静态常量,可理解为类内部是对一组变量的封装。
恩,暂停一下吧,我要先来解答一下上一篇中的问题,怎么通过enum来定义变量并赋值。
public enum Weekday {
monday("1"),tuesday("2"),wensday("3"),thursday("4"),friday("5"),saturday("6"),sunday("7");
// 成员变量
private String value;
// 构造方法
private Weekday(String v){
value = v;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
哇有点小复杂,先消化一下吧!
参考资料:
http://www.cnblogs.com/frankliiu-java/archive/2010/12/07/1898721.html