如果类的对象只有有限个,确定的,强烈建议使用枚举类。JDK5.0后用关键字enum定义。
-枚举类对象的属性不应允许被改动, 所以应该使用 private final 修饰
-枚举类的使用 private final 修饰的属性应该在构造器中为其赋值
-若枚举类显式的定义了带参数的构造器, 则在列出枚举值时也必须对应地传入参数
-使用 enum 定义的枚举类默认继承了 java.lang.Enum类,因此不能再继承其他类
-enum的toString方法默认输出对象的名字,若想自定义输出内容要重写。
-必须在枚举类的第一行声明枚举类对象
- enum Season {
- SPRING("1","IlikeIt"),
- SUMMER("2","IHateIt"),
- AUTUMN("3","IlikeIt"),
- WINTER("4","IHateIt");
- private final String name;
- private final String desc;
-
- Season(String name, String desc) {
- this.name = name;
- this.desc = desc;
- }
-
- public String getName() {
- return name;
- }
-
- public String getDesc() {
- return desc;
- }
-
- @Override
- public String toString() {
- return "Season{" +
- "name='" + name + '\'' +
- ", desc='" + desc + '\'' +
- '}';
- }
- }
-
- 测试:
- System.out.println(Season.SPRING);
- System.out.println(Season.SUMMER);
-
- Season{name='1', desc='IlikeIt'}
- Season{name='2', desc='IHateIt'}
-
values()方法:返回枚举类型的对象数组。该方法可以很方便地遍历所有的 枚举值。
valueOf(String str):可以把一个字符串转为对应的枚举类对象。要求字符串必须是枚举类对象的“名字”。如不是,会有运行时异常: IllegalArgumentException。
toString():返回当前枚举类对象常量的名称
- System.out.println(Season.values()[0]);
- System.out.println(Season.valueOf("SUMMER"));
- System.out.println(Season.WINTER.toString());
-
-
- Season{name='1', desc='IlikeIt'}
- Season{name='2', desc='IHateIt'}
- Season{name='4', desc='IHateIt'}
对于实现了接口的枚举类,我们要在每个枚举对象中实现接口中的方法。
- interface info{
- void voice();
- }
- enum Season implements info{
- SPRING("1","IlikeIt"){
- @Override
- public void voice() {
- System.out.println("春天");
- }
- },
- SUMMER("2","IHateIt") {
- @Override
- public void voice() {
- System.out.println("夏天");
- }
- },
- AUTUMN("3","IlikeIt") {
- @Override
- public void voice() {
- System.out.println("秋天");
- }
- },
- WINTER("4","IHateIt") {
- @Override
- public void voice() {
- System.out.println("冬天");
- }
- };
- private final String name;
- private final String desc;
-
- Season(String name, String desc) {
- this.name = name;
- this.desc = desc;
- }
-
- public String getName() {
- return name;
- }
-
- public String getDesc() {
- return desc;
- }
-
- @Override
- public String toString() {
- return "Season{" +
- "name='" + name + '\'' +
- ", desc='" + desc + '\'' +
- '}';
- }
- }
-
- 测试:
- Season.AUTUMN.voice();
- Season.WINTER.voice();
-
- 秋天
- 冬天