1、枚举类也是一个类,也可以有属性,等等:
public enum SeasonEnum{ SPRING, SUMMER, FALL, WINTER; }
这个是没有其他属性的。
package com.creditharmony.adapter.testCase.test; public class EnumTest { public void judge(SeasonEnum s) { switch (s) { case SPRING: System.out.println("春天"); break; case SUMMER: System.out.println("夏天"); break; case FALL: System.out.println("秋天"); break; case WINTER: System.out.println("冬天"); break; default: break; } } public static void main(String[] args) { for (SeasonEnum s : SeasonEnum.values()) { System.out.println(s); } new EnumTest().judge(SeasonEnum.FALL); } }
进一步修改枚举代码:
package com.creditharmony.adapter.testCase.test; public enum Gender { MALE, FEMALE; private String name; public String getName() { return name; } public void setName(String name) { switch (this) { case MALE: if ("男".equals(name)) { this.name = name; } else { System.out.println("参数错误,name:" + name); return; } break; case FEMALE: if ("女".equals(name)) { this.name = name; } else { System.out.println("参数错误,name:" + name); return; } break; default: break; } } }
上面的枚举中没有为各项指定初始值,而且属性可修改,其实枚举属性不应该被修改,所以应该用private final 来修饰。
public enum Gender { MALE("男"), FEMALE("女"); // 枚举类的构造器只能用private修饰 private Gender(String name){ this.name=name; } private String name; public String getName() { return name; } }
public static void main(String[] args) { System.out.println(Gender.FEMALE.getName()); }
输出结果:女。